PHP在连结MYSQL时有两个FUNCTION
CONNECT与PCONNECT
这两个函式的差别在哪裡?
一般的标准答桉都是:
PCONNECT是持续性的连接,PHP会重複使用已经存在的资料库连线
但是再追问下去,能说得出来的人就少了许多
常见的疑问有:
什麽时候要用CONNECT什麽时候用PCONNECT?
mysql_close何时使用?
为什麽DATABASE上有一堆SLEEP的PROCESS?
明明用PCONNECT为何每次RESOURCE ID都不同?
先回归到最简单的解释,pconnect会去检查是否有已经存在的资料库连线。
若有,就使用旧的连线;若无,就新开启一个连线
但是这裡所说得检查连线,是指这一个APACHE行程所开启的资料库连线
而不是这一台WEB SERVER所开启的资料库连线。
一台WEB SERVER上可能有上百个APAHE行程(2.0预设最大150个)
也就是说 在最大情况下可能会有上百个PCONNECT造成的资料库连线
(实际上会远少于此)
所以同样使用PCONNECT是会出现不同RESOURCE ID的
因为他可能是在不同行程上面执行
而PCONNECT是不会在查询完成后就关闭,而是会等待一定时间
这个时间可以由MYSQL上的wait_timeout设定
而且mysql_close并无法关闭pconnect所开启的连线,只能关闭connect所开启的资料库连线。当然如果没有CLOSE在经过TIMEOUT时间之后也是会被D