Nextrp [CPP] RU + Many GEOs Игра на карте России | NEXTRP

Пул соединений в PHP

php connection-pooling

60082 просмотра

6 ответа

531 Репутация автора

Можно ли кэшировать соединения с базой данных при использовании PHP, как если бы вы использовали контейнер J2EE? Если так, то как?

Автор: The Chairman Источник Размещён: 02.09.2008 03:11

Ответы (6)


0 плюса

1708 Репутация автора

Вы не можете создавать экземпляры пулов соединений вручную.

Но вы можете использовать «встроенный» пул соединений с функцией mysql_pconnect .

Автор: Marcel Размещён: 02.09.2008 03:42

8 плюса

5020 Репутация автора

Я полагаю, вы используете mod_php, верно?

Когда PHP-файл завершает выполнение, все его состояние уничтожается, поэтому нет способа (в коде PHP) выполнить пул соединений. Вместо этого вы должны полагаться на расширения.

Вы можете mysql_pconnect, чтобы ваши соединения не закрывались после завершения страницы, и они будут повторно использованы в следующем запросе.

Это может быть все, что вам нужно, но это не то же самое, что пул соединений, так как нет способа указать количество соединений, которые нужно поддерживать открытыми.

Приветствия.

Автор: Julio César Размещён: 02.09.2008 03:49

47 плюса

1960 Репутация автора

В php нет пула соединений .
mysql_pconnect и пул соединений - это две разные вещи. Есть много проблем, связанных с, mysql_pconnectи сначала вы должны прочитать руководство и внимательно его использовать, но это не пул соединений.

Пул соединений - это метод, при котором сервер приложений управляет соединениями. Когда приложению требуется соединение, оно запрашивает его у сервера приложений, а сервер приложений возвращает одно из подключенных соединений, если оно есть.

Мы можем сделать масштабирование соединения в php для этого, перейдите по следующей ссылке: http://www.oracle.com/technetwork/articles/dsl/white-php-part1-355135.html

Так что нет подключения пула в php.

Как сказал Хулио, apache освобождает все ресурсы, когда запрос заканчивается для текущего запроса. Вы можете использовать mysql_pconnect, но вы ограничены этой функцией, и вы должны быть очень осторожны. Другой выбор - использовать шаблон синглтона, но ничего из этого не объединяет.

Это хорошая статья: https://blogs.oracle.com/opal/highly-scalable-connection-pooling-in-php

Также прочитайте этот http://www.apache2.es/2.2.2/mod/mod_dbd.html

Автор: darpet Размещён: 29.09.2010 07:47

11 плюса

449 Репутация автора

Постоянные соединения - не что иное, как пул соединений. Постоянное соединение в php будет использоваться повторно только в том случае, если вы создадите несколько соединений с БД в одном и том же контексте выполнения запроса / скрипта. В большинстве типичных сценариев веб-разработки вы максимально увеличите количество подключений, если будете использовать mysql_pconnect, потому что ваш скрипт не сможет получить ссылку на какие-либо открытые подключения по вашему следующему запросу. Лучший способ использовать соединения db в php - создать одноэлементный экземпляр объекта db, чтобы соединение использовалось повторно в контексте выполнения вашего скрипта. Это по-прежнему требует как минимум 1 дБ соединения на запрос, но это лучше, чем создание нескольких дБ соединений на запрос.

В php нет реального пула соединений с БД из-за природы php. Php не является сервером приложений, который может сидеть между запросами и управлять ссылками на пул открытых соединений, по крайней мере, без какого-либо серьезного взлома. Я думаю, что теоретически вы могли бы написать сервер приложений на php и запустить его в виде сценария командной строки, который просто сидел бы в фоновом режиме и оставлял открытыми несколько соединений db и передавал ссылки на них другим вашим скриптам, но я не Я знаю, будет ли это возможно на практике, как вы передадите ссылки из вашего сценария командной строки в другие сценарии, и я сомневаюсь, что он будет работать хорошо, даже если вы сможете его выполнить. Во всяком случае, это в основном спекуляция. Я только что заметил ссылку, которую кто-то опубликовал на модуль apache, чтобы разрешить пул соединений для серверов prefork, таких как php. https://github.com/junamai2000/mod_namy_pool#readme

Автор: minorgod Размещён: 26.04.2012 06:51

6 плюса

5032 Репутация автора

Вы можете использовать MySQLi .

Для получения дополнительной информации прокрутите вниз до раздела « Пул подключений » @ http://www.php.net/manual/en/mysqli.quickstart.connections.php#example-1622.

Обратите внимание, что пул подключений также зависит от вашего сервера (то есть Apache httpd) и его конфигурации.

Автор: user193130 Размещён: 07.01.2014 04:38

0 плюса

1113 Репутация автора

Я хотел бы предложить PDO::ATTR_PERSISTENT

Постоянные соединения - это ссылки, которые не закрываются, когда заканчивается выполнение вашего скрипта. Когда запрашивается постоянное соединение, PHP проверяет, существует ли уже идентичное постоянное соединение (которое оставалось открытым ранее) - и если оно существует, оно использует его. Если он не существует, он создает ссылку.

Автор: Amir Forsati Размещён: 22.03.2019 01:41
Вопросы из категории :
32x32