【发布时间】:2013-08-24 19:23:07
【问题描述】:
我在我的一个应用程序中使用 phpgacl 库进行授权。这个库正在使用 mysql_pconnect 连接到数据库。问题是连接没有被重用,有时整个应用程序因错误太多连接而崩溃。
我没有太多并发用户,因此增加 mysql 中的最大连接数不会永久解决问题。
我做了一个简单的测试来简化问题。我写了一个简单的php脚本/var/www/a.php:
<?
mysql_pconnect('localhost', 'root', 'root');
?>
当我第一次点击localhost/a.php 时,我在 mysql 进程列表中看到一个与数据库的连接。
当我第二次点击该链接时,我希望该连接能够被重用。但是,事实并非如此。创建了一个新连接,我看到两个连接处于睡眠状态。每次点击链接时计数都会增加。
当我重新启动 apache 时,所有这些连接都会关闭。
我想知道 php mysql_pconnect 是如何工作的,以及它是如何使用之前建立的 mysql 连接的。而且,为什么在我上面提到的示例中没有发生这种情况?
其中一个 cmets here 写道:
You are probably using a multi-process web server such as Apache. Since
database connections cannot be shared among different processes a new
one is created if the request happen to come to a different web server
child process.
这是否意味着不建议使用 mysql_pconnect 和 apache?
【问题讨论】:
标签: php mysql database-connection mysql-connect mysql-pconnect