API de Complementos del Controlador Nativo de MySQL
PHP Manual

La API de complementos de mysqlnd

La siguiente es una lista de funciones proporcionadas en la API de complementos de mysqlnd:

No existe una definción formal de lo que es un complemento y cómo funciona el mecanismo de un complemento.

Los componentes que se encuentran a menudo en los mecanismos de los complementos son:

El concepto de complemento de mysqlnd emplea estas características, y además disgruta de una arquitectura abierta.

Sin restricciones

Un complemento tiene acceso completo al funcionamiento interno de mysqlnd. No existen límites de seguridad o restricciones. Todo puede ser sobrescrito para implementar algoritmos amistosos u hostiles. Se recomienda que se desplieguen complementos desde una fuente de confianza.

Como se discutió anteriormente, los complementos puede usar punteros libremente. Estos punteros no están restringidos de ninguna manera, y pueden apuntar a los datos de otros complementos. Se puede usar una sencilla aritmética de índices para leer los datos de otros complementos.

Se recomienda que se escriban complementos cooperativos, y que siempre se llame al método padre. Los complemento deberían siempre cooperar con mysqlnd.

Cuestiones: un ejemplo de encadenamiento y cooperación
Extensión puntero de mysqlnd.query() pila de llamdas si se llama al padre
ext/mysqlnd mysqlnd.query() mysqlnd.query
ext/mysqlnd_cache mysqlnd_cache.query()
  1. mysqlnd_cache.query()

  2. mysqlnd.query

ext/mysqlnd_monitor mysqlnd_monitor.query()
  1. mysqlnd_monitor.query()

  2. mysqlnd_cache.query()

  3. mysqlnd.query

En este escenario, se cargan una caché (ext/mysqlnd_cache) y un complemento monitor (ext/mysqlnd_monitor). Ambos subclases de Connection::query(). El registro del complemento sucede en MINIT usando la lógica mostrada anteriormente. PHP llama a las extensiones en orden alfabético de manera predeterminada. Los complementos no son conscientes de los demás complementos y no establecen dependencias de extensiones.

Por omisión, los complementos llaman a la implementación padre del método de consulta en sus versiones derivadas del método.

Resumen de las extensiones de PHP

Este es un resumen de lo que sucede cuando se usa un complemento de ejemplo, ext/mysqlnd_plugin, el cual expone la API de complementos en C de mysqlnd a PHP:


API de Complementos del Controlador Nativo de MySQL
PHP Manual