Модули mysqli и PDO_MySQL — легковесные обёртки поверх клиентской библиотеки языка C.
Модули работают либо с библиотекой драйвера mysqlnd,
либо с клиентской библиотекой языка C libmysqlclient
.
Библиотеку выбирают на этапе компиляции.
Библиотека mysqlnd — часть дистрибутива PHP. Библиотека предлагает функции наподобие ленивых соединений и кеширования запросов, включая средства, которые недоступны в библиотеке libmysqlclient, поэтому настоятельно рекомендуется выбирать встроенную в PHP библиотеку mysqlnd. Документация по mysqlnd даёт дополнительную информацию и список средств и функциональности, которую предлагает драйвер.
Пример #1 Команды конфигурирования модуля mysqlnd или библиотеки libmysqlclient
// Рекомендуется, компилируется с драйвером mysqlnd $ ./configure --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd // Рекомендуется, компилируется с драйвером mysqlnd $ ./configure --with-mysqli --with-pdo-mysql // Не рекомендуется, компилируется с библиотекой libmysqlclient языка C $ ./configure --with-mysqli=/path/to/mysql_config --with-pdo-mysql=/path/to/mysql_config
Сравнение библиотек
PHP-программистам рекомендуют работать с драйвером mysqlnd, а не с клиентской библиотекой MySQL Client Server, которая распространяется как пакет libmysqlclient. Обе библиотеки поддерживаются и непрерывно совершенствуются.
Родной PHP-драйвер MySQL Native Driver (mysqlnd) | Клиентская библиотека MySQL Client Server (libmysqlclient ) |
|
---|---|---|
Часть дистрибутива PHP | Да | Нет |
Версия PHP, в которой появилась библиотека | 5.3.0 | Нет данных |
Лицензия | PHP License 3.01 | Двойная лицензия |
Статус разработки | Активный | Активный |
Жизненный цикл | Окончание не анонсировано | Окончание не анонсировано |
Компиляция по умолчанию (для всех модулей MySQL) | Да | Нет |
Поддержка протокола сжатия | Да | Да |
Поддержка протокола SSL | Да | Да |
Поддержка именованных конвейеров | Да | Да |
Неблокирующие асинхронные запросы | Да | Нет |
Статистика производительности | Да | Нет |
Конфигурация LOAD LOCAL INFILE учитывает директиву open_basedir | Да | нет |
Взаимодействие со внутренней системой управления памятью PHP (например, соблюдение ограничений памяти PHP) | Да | Нет |
Возврат числовых столбцов как целочисленных значений double (COM_QUERY) | Да | нет |
Возврат числовых столбцов как строк (string) (COM_QUERY) | Да | Да |
Поддержка API плагинов | Да | Ограниченно |
Автоматическое переподключение | нет | опционально |