不同于mysql_connect的短连接,mysql_pconnect持久连接的时候,将先尝试寻找一个在同一个主机上用同样的用户名和密码已经打开的(持久)连接,如果找到,则返回此连接标识而不打开新连接。
(请问一下如果这个连接目前处于忙碌的时候要怎么办?是等待还是创建新连接进来?)
当执行完毕后,到 服务器的持久连接不会被关闭,此连接将保持打开以备以后使用,即mysql_close()
不会关闭由 mysql_pconnect()
建立的连接。
PHP
本身并没有数据库连接池的概念,但是有进程池的概念,
一个子进程结束后会被放回进程池,
这也就使得用mysql_pconnect
打开的的那个连接资源可以不被释放,而是依附在相应的子进程上保存到了进程池中。于是在下一个连接请求时它就可以被复用。但是在并发访问量大的时候,如果使用mysql_pconnect
,会由于之前的子进程占用的连接没有close,
很快使达到最大连接数,使得之后的请求可能得不到响应。
当然,高并发情况下也不能怪罪pconnect,用短连接频繁连接,也一样有问题。在没有连接池的情况下,用做连接池管理是比较好的选择。
阅读(989) | 评论(0) | 转发(0) |