пул соединений php mysql

Я планирую использовать MYSQL. Доступно ли расширение пула соединений? Или какова нормальная практика подключения? Это тот, который используется везде...

mysqli_connect("localhost", "xxx", "xxx", "test");

Люди используют обычные mysql_connect или pconnect..? Насколько лучше pconnect и какие настройки мне следует сделать для PConnect?


person coool    schedule 06.05.2009    source источник


Ответы (6)


вы когда-нибудь использовали mysql_pconnect() ? mysql_pconnect() действует очень похоже на mysql_connect() с двумя существенными отличиями.

Во-первых, при подключении функция сначала попытается найти (постоянную) ссылку, которая уже открыта с тем же хостом, именем пользователя и паролем. Если он найден, вместо открытия нового соединения будет возвращен его идентификатор.

Во-вторых, соединение с SQL-сервером не будет закрыто, когда выполнение скрипта завершится. Вместо этого ссылка останется открытой для использования в будущем (mysql_close() не закроет ссылки, установленные mysql_pconnect()).

Поэтому этот тип ссылки называется «постоянной».

Проверьте это здесь

person Sadegh    schedule 06.05.2009

Поддержка постоянных соединений была введена в PHP 5.3 для расширения mysqli. Поддержка уже присутствовала в PDO MYSQL и ext/mysql. Идея постоянных соединений заключается в том, что соединение между клиентским процессом и базой данных может использоваться клиентским процессом повторно, а не создаваться и уничтожаться несколько раз. Это уменьшает накладные расходы на создание новых подключений каждый раз, когда они требуются, поскольку неиспользуемые подключения кэшируются и готовы к повторному использованию.

В отличие от расширения mysql, mysqli не предоставляет отдельной функции для открытия постоянных соединений. Чтобы открыть постоянное соединение, при подключении необходимо добавить p: к имени хоста.

источник: http://www.php.net/manual/en/mysqli.persistconns.php

sample code:
$GLOBALS["mysqli"] = new mysqli('p:localhost', 'username', 'password', 'db_name');

редактировать: извините за обман, не видел других ответов.

person Benedict    schedule 01.06.2011

используйте расширение mysqli или PDO вместо старого расширения mysql.

вы можете указать mysqli_connect или mysqli::__construct использовать постоянное соединение, если вы поставите перед своим именем хоста префикс «p:»

http://php.net/manual/en/mysqli.construct.php

person Tyrael    schedule 02.08.2011

Это старый вопрос, но я хотел добавить свои два цента, так как рассматривал эту же проблему. Начиная с PHP 5.3, mysqli поддерживает постоянные соединения, вам просто нужно добавить p: перед именем хоста.

Если вы используете Apache, пытались ли вы изучить пул соединений с mysql через модуль Apache mod_dbd? Он поддерживает пул соединений для MySQL. http://httpd.apache.org/docs/2.2/mod/mod_dbd.html

person snoopaloop    schedule 01.07.2010
comment
Спасибо, что обратили внимание на то, что префикс хоста "p:" для постоянных подключений требует PHP версии 5.3. Нигде больше не нашел этот маленький самородок. - person Bob Stein; 08.01.2013

Есть 3 функции подключения:

mysql_connect: обычное соединение, без пула, нельзя выполнять хранимые процедуры (только sql)

mysql_pconnect: соединение в пуле, вы не можете выполнять хранимые процедуры (только sql)

mysqli_connect: обычное соединение, без пула, вы можете выполнять хранимые процедуры (требуется mysql 5 или выше)

mysqli_pconnect: НЕ СУЩЕСТВУЕТ. Нет встроенной функции подключения как для обработки хранимых процедур, так и для пула.

Мой совет (из опыта и серфинга):

Если вам нужны хранимые процедуры, не используйте пулы и используйте mysqli_connect.

Если вам не нужны хранимые процедуры, используйте mysql_pconnect

person daghan    schedule 21.03.2010

Не совсем ответ, но я думаю, вы могли бы также рассмотреть объекты данных PHP (PDO) http://php.net/manual/en/book.pdo.php и PDO для MySQL http://php.net/manual/en/ref.pdo-mysql.php

person aviv    schedule 21.03.2010