我在我的一个应用程序中使用 phpgacl 库进行授权。这个库正在使用 mysql_pconnect 连接到数据库。问题是连接没有被重用,有时整个应用程序因错误连接过多而崩溃。我没有太多并发用户,因此增加 mysql 中的最大连接数不会永久解决问题。我做了一个简单的测试来简化问题。我写了一个简单的 php 脚本/var/www/a.php
:
<?
mysql_pconnect('localhost', 'root', 'root');
?>
当我第一次点击localhost/a.php
时,我在 mysql processlist 中看到一个与数据库的连接。当我第二次点击该链接时,我希望该连接能够被重用。但是,事实并非如此。创建了一个新连接,我看到两个连接处于睡眠状态。每次我点击链接时,计数都会增加。
当我重新启动 apache 时,所有这些连接都会关闭。
我想知道 php mysql_pconnect 是如何工作的,以及它是如何使用以前建立的 mysql 连接的。而且,为什么在我上面提到的示例中没有发生这种情况?
这里的评论之一是:
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 一起使用?