Architecture
The mysqlnd connection multiplexing plugin is implemented as a PHP extension.
It is written in C and operates under the hood of PHP. During the
startup of the PHP interpreter, in the module initialization phase of the
PHP engine, it gets registered as a
mysqlnd plugin to replace specific
mysqlnd C methods.
The mysqlnd library uses PHP streams to communicate with the MySQL
server. PHP streams are accessed by the mysqlnd library through its net module.
The mysqlnd connection multiplexing plugin proxies methods of the mysqlnd
library net module to control opening and closing of network streams.
Upon opening a user connection to MySQL using the appropriate connection
functions of either mysqli,
PDO_MYSQL or
ext/mysql, the plugin will search its
connection pool for an open network connection. If the pool
contains a network connection to the host specified by the connect function
using the transport method requested (TCP/IP, Unix domain socket, Windows named pipe),
the pooled connection is linked to the user handle. Otherwise, a new
network connection is opened, put into the poolm and associated with the
user connection handle. This way, multiple user handles can be linked
to the same network connection.