Драйвер MySQL Native Driver, или mysqlnd, предоставляет API, через который плагины встраиваются
в драйвер.
Плагины драйвера mysqlnd
работают на уровне между PHP-приложениями и MySQL-сервером, аналогично
приложению MySQL Proxy, которое также работает между клиентскими приложениями и сервером MySQL.
Плагины драйвера mysqlnd выполняют типовые
задачи MySQL Proxy наподобие балансировки нагрузки, мониторинга и оптимизации
быстродействия. Из-за другой архитектуры и места обработки запросов
плагины драйвера mysqlnd не содержат недочётов MySQL Proxy наподобие
единой точки отказа, не требуют установки отдельного прокси-сервера
и изучения нового языка программирования Lua.
Плагин mysqlnd расширяет функции драйвера
mysqlnd. Плагин умеет перехватывать вызовы функций
драйвера mysqlnd из MySQL-модулей PHP наподобие
ext/mysql, ext/mysqli и PDO_MYSQL.
Поэтому плагинам драйвера mysqlnd доступен перехват каждого запроса,
который модули выполнили из клиентского приложения.
Плагины умеют перехватывать или подменять вызовы внутренних функций драйвера mysqlnd.
API не ограничивает модификацию таблиц внутренних функций драйвера mysqlnd
и разрешает перенаправлять вызовы конкретных функций драйвера mysqlnd
из mysqlnd-модулей на функции mysqlnd-плагина.
Управление таблицей внутренних функций
драйвера mysqlnd даёт плагинам максимум гибкости.
Плагины драйвера mysqlnd — фактически PHP-модули на языке C,
которые работают через API интеграции mysqlnd-плагинов
в PHP-драйвер MySQL Native Driver, или mysqlnd.
Плагины на 100 % прозрачны
для PHP-приложений. Приложение не требуется изменять, поскольку плагины работают
на другом уровне. С точки зрения поведения, mysqlnd-плагин
работает на уровень ниже mysqlnd-драйвера, поскольку переопределяет поведение драйвера.
Следующий список приводит примеры практических задач,
которые решают посредством плагинов драйвера mysqlnd.
Доступные плагины драйвера MySQL Native Driver
Репозитории PECL уже содержит ряд mysqlnd-плагинов, включая следующие: