PHP Velho Oeste 2024

Выбор библиотеки

Модули mysqli и PDO_MySQL - всего лишь легковесные обёртки над библиотеками написанными на языке C. Эти модули могут использовать библиотеки mysqlnd и libmysqlclient. Выбор библиотеки необходимо сделать на этапе компиляции.

Библиотека mysqlnd является частью дистрибутива PHP. Она предоставляет такие возможности как ленивое соединение(lazy connections) и кеширование запросов. В библиотеке libmysqlclient данные возможности недоступны. Так что крайне рекомендуется использовать именно встроенную библиотеку mysqlnd. Для дополнительных сведений смотрите документацию mysqlnd.

Пример #1 Команды конфигурирования для mysqlnd и libmysqlclient

//Рекомендованная, компилирует с mysqlnd
$ ./configure --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd

//Рекомендованная, компилирует с mysqlnd
$ ./configure --with-mysqli --with-pdo-mysql

//Не рекомендованная, компилирует с libmysqlclient
$ ./configure --with-mysqli=/path/to/mysql_config --with-pdo-mysql=/path/to/mysql_config

Сравнение возможностей библиотек

Рекомендуется использовать библиотеку mysqlnd, а не MySQL Client Server library (libmysqlclient). Обе библиотеки развиваются и поддерживаются производителями.

  MySQL native driver (mysqlnd) MySQL client server library (libmysqlclient)
Часть дистрибутива PHP Да Нет
Появилась в версии PHP 5.3.0 Нет данных
Лицензия PHP License 3.01 Двойная лицензия
Статус разработки Активный Активный
Жизненный цикл Окончание не анонсировано Окончание не анонсировано
Компилирование по умолчанию (для всех модулей MySQL) Да Нет
Поддержка протокола сжатия Да Да
Поддержка SSL Да Да
Поддержка именованных конвейеров (named pipes) Да Да
Неблокирующие, асинхронные запросы Да Нет
Статистика производительности Да Нет
LOAD LOCAL INFILE уважает директиву open_basedir Да нет
Использует штатный менеджер памяти PHP (т.е., ограничения памяти PHP) Да Нет
Возвращает числовые значения как значения с плавающей точкой(float) (COM_QUERY) Да нет
Возвращает числовые значения как строки (string) (COM_QUERY) Да Да
Поддержка плагинов Да Ограниченно
Автоматическое переподключение нет опционально
add a note add a note

User Contributed Notes 1 note

up
-4
siguza at siguza dot net dot IGNORETHIS
9 years ago
If you're using named pipes under Windows, you should NOT use mysqlnd.
Tested with PHP 5.6.4, libmysqlclient gave me results of about 20ms on a page with 50 queries while mysqlnd was over 3000ms!
To Top