Architecture
Architecture
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.