MySQL 原生 PHP 驱动 (mysqlnd) 是针对 PHP 脚本语言的 MySQL 客户端库 (libmysql) 的直接替换。
PHP MySQL 扩展
PHP MySQL 扩展是基于 C 客户端库的轻量级包装器。有 3 个 PHP MySQL 扩展
- ext/mysql (不推荐)
- ext/mysqli
- PDO_MySQL
建议使用 mysqli 或 PDO_MySQL 扩展。不建议在新的开发中使用旧的 mysql 扩展。
选择库
扩展可以使用 mysqlnd 或 libmysql 库从 PHP 连接到 MySQL。选择其中一个库是在编译时决定的。这两个库都受支持,并且不断改进。
MySQL 建议将 MySQL 原生 PHP 驱动程序 (mysqlnd) 与 ext/mysqli 或 PDO_MySQL 一起使用。
下载源代码和二进制文件
所有 3 个 PHP MySQL 扩展和 mysqlnd 库都是 PHP 源代码的一部分。源代码和二进制文件可从以下网址获取: https://php.ac.cn/downloads.php
PHP 5.4 默认使用 mysqlnd
从 PHP 5.4 开始,mysqlnd 库是 php.net 编译时默认库,适用于所有 PHP MySQL 扩展。此外,php.net Windows 团队从 mysqlnd 在 PHP 5.3 中可用时就开始在官方 PHP Windows 发行版中使用 mysqlnd。
使用 mysqlnd 的优势
mysqlnd 库针对 PHP 进行了高度优化,并与 PHP 紧密集成。MySQL 客户端库无法提供相同的优化,因为它是一个通用客户端库。
mysqlnd 库使用 PHP 内部 C 基础结构与 PHP 无缝集成。此外,它使用 PHP 内存管理、PHP 流 (I/O 抽象) 和 PHP 字符串处理例程。mysqlnd 使用 PHP 内存管理,例如,通过使用只读变量 (写时复制) 来节省内存,并使 mysqlnd 适用于 PHP 内存限制。其他优势包括
- 功能强大的插件 API 来扩展功能集
- 异步、非阻塞查询
- 150 多个性能统计信息
- 与 PHP 5.3 及更高版本一起提供
- 无需安装 MySQL 客户端库
- 功能强大的插件。见下文。
Mysqlnd 插件
各种 mysqlnd 插件,提供额外的功能,可从 PECL 获取。流行的 mysqlnd 插件包括
- 复制和负载均衡插件 - mysqlnd_ms
- 查询结果缓存插件 - mysqlnd_qc
- 用户处理程序插件 (使用 PHP 而不是 C 编写插件) - mysqlnd_uh
- Mysqlnd 连接多路复用插件 mysqlnd_mux
- Mysqlnd Memcache 插件
- 多连接插件 - mysqlnd_mc
- 准备好的语句句柄缓存插件 - PECL/mysqlnd_pscache
- SQL 注入保护插件 - PECL/mysqlnd_sip