Le plugin de gestion utilisateur mysqlnd peut être compris comme un proxy
client-serveur pour toutes les extensions PHP MySQL (mysqli,
mysql,
PDO_MYSQL), si elles ont été compilées
pour utiliser la bibliothèque mysqlnd.
Les extensions utilisent la bibliothèque mysqlnd
en interne,
au niveau du langage C, pour communiquer avec le serveur MySQL. PECL/mysqlnd_uh
permet d'intercepter beaucoup d'appels mysqlnd
. De plus,
la plupart des activités des extensions PHP MySQL peuvent être monitorées.
En raison du fait que la surveillance survient au niveau de la bibliothèque, à une couche en dessous de l'application, il est possible de surveiller les applications sans avoir à les modifier.
Au niveau C, la bibliothèque mysqlnd
est structurée en modules
ou en classes. L'extension accroche toutes les méthodes de la classe connection
interne à mysqlnd
et les expose via la classe
MysqlndUhConnection de l'espace utilisateur.
Quelques méthodes de la classe statement
interne à mysqlnd
sont disponibles aux utilisateurs PHP avec la classe MysqlndUhPreparedStatement.
En surchargeant les classes MysqlndUhConnection et
MysqlndUhPreparedStatement, les utilisateurs
peuvent avoir accès aux appels fonctions interne à mysqlnd
.
Note:
Les appels aux fonctions internes à
mysqlnd
n'ont pas pour but d'être exposées aux utilisateurs PHP. Une manipulation de leurs activités peut conduire à un crash de PHP ou à une fuite mémore. Aussi, ceci ne saurait être considéré comme un bogue. Veuillez garder à l'esprit que vous accédez à des fonctions de la bibliothèque C via PHP qui sont attendus à effectuer certaines actions, qui peuvent ou non être émulées dans l'espace utilisateur. Aussi, il est fortement recommandé de toujours appeler la méthode implémentée parente lors d'une surcharge de la classe MysqlndUhConnection ou de la classe MysqlndUhPreparedStatement. Pour éviter le pire, l'extension effectue quelques contrôles. Voir aussi les Options de configuration Mysqlnd_uh.