The mysqlnd user handler plugin can be understood as a client-side
proxy for all PHP MySQL extensions
PDO_MYSQL), if they are
compiled to use the
mysqlnd library. The
extensions use the
mysqlnd library internally,
at the C level, to communicate with the MySQL server.
PECL/mysqlnd_uh allows it to hook many
calls. Therefore, most activities of the PHP MySQL extensions can
Because monitoring happens at the level of the library, at a layer below the application, it is possible to monitor applications without changing them.
On the C level, the
mysqlnd library is
structured in modules or classes. The extension hooks almost all
methods of the
connection class and exposes them through the
user space class
few methods of the mysqlnd internal
class are made available to the PHP user with the class
MysqlndUhPreparedStatement. By subclassing
MysqlndUhPreparedStatement users get access
mysqlnd internal function calls.
mysqlnd function calls are not
designed to be exposed to the PHP user. Manipulating their
activities may cause PHP to crash or leak memory. Often, this is
not considered a bug. Please, keep in mind that you are
accessing C library functions through PHP which are expected to
take certain actions, which you may not be able to emulate in
user space. Therefore, it is strongly recommended to always call
the parent method implementation when subclassing
MysqlndUhPreparedStatement. To prevent
the worst case, the extension performs some sanity checks.
Please, see also the