我在其中一個應用程序中使用phpgacl庫進行授權。這個庫使用mysql_pconnect連接到數據庫。問題是連接沒有得到重用,有時整個應用程序崩潰,連接錯誤太多。 我沒有太多的併發用戶,因此增加mysql中的最大連接數不會永久解決問題。 我做了一個簡單的測試來簡化問題。我寫了一個簡單的PHP腳本/var/www/a.php
:持久性數據庫連接未得到重用
<?
mysql_pconnect('localhost', 'root', 'root');
?>
當我打localhost/a.php
的第一次,我看到在MySQL的processlist一個連接到數據庫。 當我第二次點擊鏈接時,我預計連接將被重用。但是,情況並非如此。一個新的連接被創建,我看到兩個連接處於睡眠狀態。每次我點擊鏈接時,計數都會增加。
當我重新啓動apache時,所有這些連接都會關閉。
我想知道php mysql_pconnect是如何工作的以及它如何使用以前建立的mysql連接。而且,爲什麼在我上面提到的例子中沒有發生這種情況?
一位評論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.
難道不建議這意味着使用與Apache mysql_pconnect?