Persistent Connections


Использование постоянных соединений

Если mysqli используется с mysqlnd,\ при создании постоянного соединения оно генерирует на сервере запрос COM_CHANGE_USER (mysql_change_user()). Это гарантирует, что при подключении будет повторно произведена авторизация.

Поскольку из-за вызовов COM_CHANGE_USER увеличиваются накладные расходы, возможно отключить такое поведение во время компиляции. В таком случае повторное использование постоянного соединения будет генерировать вызов COM_PING (mysql_ping), для проверки возможности повторного использования соединения.

Генерация вызова COM_CHANGE_USER может быть отключена флагом компиляции MYSQLI_NO_CHANGE_USER_ON_PCONNECT. Например:

 shell# CFLAGS="-DMYSQLI_NO_CHANGE_USER_ON_PCONNECT" ./configure --with-mysql=/usr/local/mysql/ --with-mysqli=/usr/local/mysql/bin/mysql_config --with-pdo-mysql=/usr/local/mysql/bin/mysql_config --enable-debug && make clean && make -j6 

Or alternatively:

 shell# export CFLAGS="-DMYSQLI_NO_CHANGE_USER_ON_PCONNECT" shell# configure --whatever-option shell# make clean shell# make 

Обратите внимание, что только mysqli совместно с mysqlnd используют COM_CHANGE_USER. Остальные комбинации расширение-драйвер используют COM_PING при инициации постоянного соединения.