Можно ли кэшировать подключения к базе данных при использовании PHP, как в контейнере J2EE? Если да, то как?
В 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
Стойкие соединения не похожи на объединение пулов. Постоянное соединение в php будет использоваться повторно, только если вы сделаете несколько подключений db в рамках одного и того же контекста выполнения запроса / сценария. В большинстве типичных сценариев для веб-разработчиков вы будете быстрее удалять свои соединения, если используете mysql_pconnect, потому что ваш скрипт не сможет получить ссылку на любые открытые соединения при следующем запросе. Лучший способ использовать db-соединения в php – сделать экземпляр singleton объекта db, чтобы соединение повторно использовалось в контексте выполнения вашего скрипта. Это по-прежнему по меньшей мере 1 дБ подключается на каждый запрос, но это лучше, чем создание нескольких подключений db за каждый запрос.
В php нет реального объединения пула db из-за характера php. Php не является сервером приложений, который может сидеть там между запросами и управлять ссылками на пул открытых подключений, по крайней мере, не без какого-либо крупного взлома. Я думаю, что в теории вы могли бы написать сервер приложений в php и запустить его как сценарий командной строки, который просто сидел бы там в фоновом режиме и поддерживал бы связку подключений db и передавал ссылки на них другим вашим скриптам, но я не знайте, возможно ли это на практике, как вы передадите ссылки из вашего сценария командной строки на другие сценарии, и я сомневаюсь, что он будет хорошо работать, даже если вы сможете это сделать. Во всяком случае, это главным образом спекуляция. Я просто заметил ссылку, которую кто-то еще отправил в модуль apache, чтобы разрешить пул соединений для серверов допроса, таких как php. Выглядит интересно: https://github.com/junamai2000/mod_namy_pool#readme
Я полагаю, вы используете mod_php, не так ли?
Когда файл PHP заканчивает выполнение всего его состояния, он убит, поэтому для пула соединений нет способа (в PHP-коде). Вместо этого вам приходится полагаться на расширения.
Вы можете mysql_pconnect, чтобы ваши соединения не закрывались после завершения страницы, таким образом, они снова используются в следующем запросе.
Это может быть все, что вам нужно, но это не то же самое, что и объединение пулов, поскольку нет способа указать количество подключений для поддержания открытости.
Приветствия.
Вы можете использовать MySQLi .
Для получения дополнительной информации перейдите к разделу Объединение пулов @ http://www.php.net/manual/en/mysqli.quickstart.connections.php#example-1622.
Обратите внимание, что объединение пулов также зависит от вашего сервера (например, Apache httpd) и его конфигурации.
Вы не можете создавать пулы соединений вручную.
Но вы можете использовать «встроенный» пул соединений с помощью функции mysql_pconnect .