php пул соединений mysql - PullRequest
19 голосов
/ 06 мая 2009

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

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

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

Ответы [ 6 ]

22 голосов
/ 06 мая 2009

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

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

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

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

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

10 голосов
/ 01 июня 2011

Постоянная поддержка соединения была введено в PHP 5.3 для MySQL расширение. Поддержка уже присутствовала в 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');

edit: Извините за дурак, других ответов не видел.

4 голосов
/ 02 августа 2011

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

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

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

3 голосов
/ 01 июля 2010

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

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

1 голос
/ 21 марта 2010

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

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

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

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

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

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

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

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

0 голосов
/ 21 марта 2010

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

...