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 при инициации постоянного соединения.


Участник рейтинга Тэглайн 2010