Я использую библиотеку phpgacl в одном из моих приложений для авторизации. Эта библиотека создает соединения с базой данных с помощью mysql_pconnect. Проблема в том, что соединения не используются повторно, а время от времени все приложение падает с ошибкой слишком много соединений. У меня не так много одновременных пользователей, и, следовательно, увеличение максимального количества соединений в mysql не решит проблему навсегда. Я сделал простой тест, чтобы упростить проблему. Я написал простой скрипт /var/www/a.php
:Стойкие соединения с БД не используются повторно
<?
mysql_pconnect('localhost', 'root', 'root');
?>
Когда я ударил localhost/a.php
в первый раз, я вижу одно подключения к базе данных в тузде 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.
ли не рекомендуется это означает, используя mysql_pconnect с апача?