Spec-Zone .ru
спецификации, руководства, описания, API
|
Copyright 1997-2012 PHP Documentation Group.
Персистентная поддержка соединения была представлена в PHP 5.3 для mysqli
расширение. Поддержка уже присутствовала в MYSQL PDO и ext/mysql. Идея позади персистентных соединений состоит в
том, что соединение между клиентским процессом и базой данных может быть снова использовано клиентским
процессом, вместо того, чтобы быть создаваемым и уничтожено многократно. Это уменьшает издержки создания новых
соединений каждый раз, когда каждый требуется, поскольку неиспользованные соединения кэшируются и готовы быть
снова использованными.
В отличие от mysql расширения, mysqli не обеспечивает отдельную функцию для открытия персистентных соединений.
Чтобы открыть персистентное соединение, следует предварительно ожидать p:
к имени
узла, соединяясь.
Проблема с персистентными соединениями состоит в том, что их могут оставить в непредсказуемых состояниях клиенты. Например, блокировка таблицы могла бы быть активирована прежде, чем клиент неожиданно завершает. Новый клиентский процесс, снова использующий это персистентное соединение, получит соединение, "как". Любая уборка должна была бы быть сделана новым клиентским процессом прежде, чем это могло хорошо использовать персистентное соединение, увеличивая бремя на программисте.
Персистентное соединение mysqli
расширение однако обеспечивает встроенный код
обработки уборки. Уборка, выполненная mysqli
включает:
Откатывайте активные транзакции
Близко и временные таблицы отбрасывания
Разблокируйте таблицы
Переменные сеанса сброса
Близко готовые операторы (всегда происходит с PHP),
Близкий обработчик
Блокировки выпуска, полученные с GET_LOCK
Это гарантирует, что персистентные соединения находятся в чистом состоянии по возврату из пула соединения, прежде, чем клиентский процесс будет использовать их.
mysqli
расширение делает эту уборку, автоматически вызывая C-API-функцию mysql_change_user()
.
У автоматической функции уборки есть преимущества и недостатки все же. Преимущество состоит в том, что программист больше не должен волноваться о добавляющем коде уборки, как его вызывают автоматически. Однако, недостаток - то, что код мог потенциально быть немного медленнее, поскольку код, чтобы выполнить уборку должен работать каждый раз, когда соединение возвращается из пула соединения.
Возможно выключить автоматический код уборки, компилируя PHP с MYSQLI_NO_CHANGE_USER_ON_PCONNECT
определенный.
mysqli
расширение поддерживает персистентные соединения или при
использовании MySQL Native Driver или при использовании MySQL Client Library.