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

22.9.9.4. Понятия

Copyright 1997-2012 PHP Documentation Group.

Это объясняет архитектуру и связанные понятия для этого плагина. Чтение и понимание этих понятий обязаны успешно использовать этот плагин.

22.9.9.4.1. Архитектура

Copyright 1997-2012 PHP Documentation Group.

mysqlnd плагин мультиплексирования соединения реализуется как расширение PHP. Это пишется в C и работает под капотом PHP. Во время запуска интерпретатора PHP, в фазе инициализации модуля механизма PHP, это регистрируется как mysqlnd плагин, чтобы заменить определенные mysqlnd методы C.

mysqlnd библиотека использует потоки PHP, чтобы связаться с сервером MySQL. К потокам PHP получает доступ mysqlnd библиотека через ее сетевой модуль. mysqlnd соединение, мультиплексирующее плагин, проксирует методы mysqlnd модуля сети библиотеки, чтобы управлять открытием и закрытием сетевых потоков.

После открытия пользовательского соединения с MySQL, используя соответствующие функции соединения или mysqli, PDO_MYSQL или ext/mysql, плагин будет искать свой пул соединения открытое сетевое соединение. Если пул содержит сетевое соединение с узлом, определенным соединить функцией, используя транспортный метод, который требуют (TCP/IP, сокет домена Unix, именованный канал Windows), объединенное в пул соединение соединяется с пользовательским дескриптором. Иначе, новое сетевое соединение открывается, помещается в poolm и связывается с пользовательским дескриптором соединения. Таким образом, многопользовательские дескрипторы могут быть соединены с тем же самым сетевым соединением.

22.9.9.4.2. Пул соединения

Copyright 1997-2012 PHP Documentation Group.

Пул соединения плагинов создается, когда PHP инициализирует свои модули (MINIT) и free'd, когда PHP завершает работу модулей (MSHUTDOWN). Это - то же самое что касается персистентных соединений MySQL.

В зависимости от модели развертывания пул используется для продолжительности одного или многократных веб-запросов. Сетевые соединения связываются с продолжительностью жизни процесса уровня операционной системы. Если процесс PHP служит многократным веб-запросам, поскольку он имеет место для Быстрого CGI или распараллеливал развертывание веб-сервера, то объединенные в пул соединения могут быть снова использованы по многократным соединениям. Поскольку мультиплексирование означает совместно использовать соединения, это может даже произойти с поточным развертыванием, что два потока или два отличных веб-запроса соединяются с объединенными в пул сетевыми соединениями.

Объединенное в пул соединение явно закрывается, как только последняя ссылка на него выпускается. Неявное завершение происходит, когда PHP завершает работу своих модулей.

22.9.9.4.3. Совместное использование соединений

Copyright 1997-2012 PHP Documentation Group.

PHP mysqlnd соединение, мультиплексирующее плагин, изменяет отношение между пользовательским дескриптором соединения и базовым соединением MySQL. Без плагина каждое соединение MySQL принадлежит точно одному пользовательскому соединению за один раз. Изменения плагина мультиплексирования. Соединение MySQL совместно используется среди многопользовательских дескрипторов. Там никакое непосредственное отношение, используя плагин.

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

Это подобно в понятии состоянию соединения связанный phenomens, описанный для PHP mysqlnd плагин выравнивания нагрузки и репликация. Пожалуйста, проверьте документацию PECL/mysqlnd_ms на большее количество деталей о состоянии соединения.

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