Соединение php с пулом mysql
Я планирую использовать MYSQL. Имеется ли расширение пула соединений? Или какая нормальная практика для подключения?
Это тот, который используется везде...
mysqli_connect("localhost", "xxx", "xxx", "test");
Используют ли люди только обычные mysql_connect
или pconnect
..? Насколько лучше pconnect
и какую настройку следует выполнять для PConnect?
Ответы
Ответ 1
Вы когда-нибудь использовали mysql_pconnect()
?
mysql_pconnect()
действует очень похоже на mysql_connect()
с двумя основными отличиями.
Во-первых, при подключении функция сначала попытается найти (постоянную) ссылку, которая уже открыта с тем же хостом, именем пользователя и паролем. Если он найден, идентификатор для него будет возвращен вместо открытия нового соединения.
Во-вторых, соединение с SQL-сервером не будет закрыто при завершении выполнения script. Вместо этого ссылка останется открытой для дальнейшего использования (mysql_close()
не будет закрывать ссылки, установленные mysql_pconnect()
).
Этот тип ссылки поэтому называется "постоянным"
Отметьте здесь
Ответ 2
Поддержка постоянной поддержки была введенный в PHP 5.3 для mysqli расширение. Поддержка уже присутствовала в PDO MYSQL и ext/mysql. Идея за постоянными соединениями соединение между клиентским процессом и база данных может быть повторно использована клиентский процесс, а не создано и уничтожено несколько раз. Это уменьшает накладные расходы при создании свежие соединения каждый раз, когда вы требуется, поскольку неиспользуемые соединения кэшированы и готовы к повторному использованию.
В отличие от расширения mysql, mysqli не обеспечивает отдельную функцию для открытия постоянных соединений. Для откройте постоянное соединение, которое вы должны preend p: к имени хоста, когда подключения.
источник: http://www.php.net/manual/en/mysqli.persistconns.php
sample code:
$GLOBALS["mysqli"] = new mysqli('p:localhost', 'username', 'password', 'db_name');
edit: Извините за обман, не увидели других ответов.
Ответ 3
используйте mysqli или расширение PDO вместо старого расширения mysql.
вы можете указать mysqli_connect
или mysqli::__construct
использовать постоянное соединение, если вы префикс своего имени хоста на "p:"
http://php.net/manual/en/mysqli.construct.php
Ответ 4
Это старый вопрос, но я хотел добавить свои два цента, поскольку я рассматривал эту проблему. Начиная с PHP 5.3, mysqli поддерживает постоянные соединения, вам просто нужно добавить p: к началу имени хоста.
Если вы используете Apache, попробовали ли вы смотреть на пул соединений с mysql через модуль Apache mod_dbd? Он поддерживает объединение пулов для MySQL. http://httpd.apache.org/docs/2.2/mod/mod_dbd.html
Ответ 5
Существует 3 функции подключения:
mysql_connect: обычное соединение, без объединения, вы не можете выполнять хранимые процедуры (просто sql)
mysql_pconnect: объединенное соединение, вы не можете выполнять хранимые процедуры (просто sql)
mysqli_connect: обычное соединение, без объединения, вы можете выполнять хранимые процедуры (требуется mysql 5 или выше)
mysqli_pconnect: НЕ СУЩЕСТВУЕТ. Не существует встроенной функции соединения как для обработки хранимых процедур, так и для объединения
Мой совет (через опыт и серфинг):
Если вам нужны хранимые процедуры, опустите пул и используйте mysqli_connect
Если вам не нужны хранимые процедуры, используйте mysql_pconnect
Ответ 6
Не совсем ответ, но я думаю, вы также можете рассмотреть объекты данных PHP (PDO)
http://php.net/manual/en/book.pdo.php
И PDO для MySQL http://php.net/manual/en/ref.pdo-mysql.php