Можно ли кэшировать подключения к базе данных при использовании PHP, как в контейнере J2EE? Если да, то как?Пул соединений в PHP
ответ
Вы не можете создавать пулы соединений вручную.
Но вы можете использовать пул соединений «встроенный» с функцией mysql_pconnect.
Я полагаю, вы используете mod_php, правильно?
Когда файл PHP завершает выполнение всего его состояния, он убит, поэтому для пула соединений нет способа (в PHP-коде). Вместо этого вам приходится полагаться на расширения.
Вы можете mysql_pconnect, чтобы ваши соединения не закрывались после завершения страницы, поэтому они могут повторно использоваться в следующем запросе.
Это может быть все, что вам нужно, но это не то же самое, что и объединение пулов, поскольку нет способа указать количество подключений для поддержания открытости.
Cheers.
Может ли соединение повторно использоваться разными пользователями? Если да, то почему в руководстве говорится, что мы должны настроить MySQL, чтобы избежать слишком большого количества подключений? – omg 2009-08-30 14:28:40
Нет подключение пула в php.
mysql_pconnect и объединение пулов - это две разные вещи. Существует множество проблем, связанных с mysql_pconnect
, и сначала вы должны прочитать руководство и тщательно его использовать, но это не объединение пулов.
Пул соединений - это метод, при котором сервер приложений управляет соединениями. Когда приложение нуждается в соединении, он запрашивает сервер приложений для него, и сервер приложений возвращает одно из объединенных соединений, если есть один бесплатный.
Мы можем сделать масштабирование соединения в PHP для этого перейдите по следующей ссылке: http://www.oracle.com/technetwork/articles/dsl/white-php-part1-355135.html
Так что нет пула соединений в PHP.
Как сказал Хулио, apache освобождает все ресурсы, когда запрос заканчивается для текущих запросов. Вы можете использовать mysql_pconnect, но вы ограничены этой функцией, и вы должны быть очень осторожны. Другой выбор - использовать singleton pattern, но ни один из них не объединяет.
Это хорошая статья: http://blogs.oracle.com/opal/2007/01/highly_scalable_connection_poo.html
Также читайте это один http://www.apache2.es/2.2.2/mod/mod_dbd.html
Нет объединения пулов? Вау. – Justin 2011-07-13 22:35:18
Постоянные соединения не имеют ничего общего с пулом подключений. Постоянное соединение в php будет использоваться повторно, только если вы сделаете несколько подключений db в рамках одного и того же контекста выполнения запроса/сценария. В большинстве типичных сценариев для веб-разработчиков вы будете быстрее удалять свои соединения, если используете mysql_pconnect, потому что ваш скрипт не сможет получить ссылку на любые открытые соединения при следующем запросе. Лучший способ использовать db-соединения в php - сделать экземпляр singleton объекта db, чтобы соединение повторно использовалось в контексте выполнения вашего скрипта. Это по-прежнему по меньшей мере 1 дБ подключается на каждый запрос, но это лучше, чем создание нескольких подключений db за каждый запрос.
В php нет никакого пула соединений в php из-за характера php.Php не является сервером приложений, который может сидеть там между запросами и управлять ссылками на пул открытых подключений, по крайней мере, не без какого-либо крупного взлома. Я думаю, что в теории вы могли бы написать сервер приложений в php и запустить его как сценарий командной строки, который просто сидел бы там в фоновом режиме и поддерживал бы связку подключений db и передавал ссылки на них другим вашим скриптам, но я не знайте, возможно ли это на практике, как вы передадите ссылки из вашего сценария командной строки на другие сценарии, и я сомневаюсь, что он будет хорошо работать, даже если вы сможете это сделать. Во всяком случае, это главным образом спекуляция. Я просто заметил ссылку, которую кто-то еще отправил в модуль apache, чтобы разрешить пул соединений для серверов допроса, таких как php. Выглядит интересно: https://github.com/junamai2000/mod_namy_pool#readme
Вы можете использовать MySQLi.
Для получения дополнительной информации перейдите к Пулы соединений раздел @http://www.php.net/manual/en/mysqli.quickstart.connections.php#example-1622
Обратите внимание, что Пулы соединений также зависит от вашего сервера (то есть Apache HTTPD) и его конфигурации.
Как насчет этого? https://github.com/junamai2000/mod_namy_pool – nam 2012-03-01 22:25:19
Вы просматривали постоянные подключения, используя [mysql_pconnect()] (http://www.php.net/mysql_pconnect)? – 2008-09-02 15:44:57