Spec-Zone .ru
спецификации, руководства, описания, API

22.9.3.5. mysqli Расширение и Персистентные Соединения

Copyright 1997-2012 PHP Documentation Group.

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

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

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

Персистентное соединение mysqli расширение однако обеспечивает встроенный код обработки уборки. Уборка, выполненная mysqli включает:

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

mysqli расширение делает эту уборку, автоматически вызывая C-API-функцию mysql_change_user().

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

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

Отметить

mysqli расширение поддерживает персистентные соединения или при использовании MySQL Native Driver или при использовании MySQL Client Library.