PHP Mysql support: 是mysql 还是mysqlnd?
您正在使用其中一个备用存储库安装现代版本的php,突然间您遇到了一个令人困惑的选择。你想在php程序中支持mysql(mysqli或PDO-mysql)。你会怎么选择?
首先,您可能应该使用PDO。与mysqli相比,它只是一个更干净的数据库界面,如果你使用像Doctrine2这样的ORM,它也往往是支持的选项。
但是你可能已经发现安装PDO软件包并不能让你支持MySQL。
那么这2个套餐是什么?一旦我们将webtatic设置为回购,那么让我们看看Centos下的yum向我们展示了什么:
* webtatic:us-east.repo.webtatic.com
====================================== ========
php56w-mysql.x86_64: 用于 使用MySQL数据库 的 PHP应用程序
的模块php56w-mysqlnd.x86_64: 用于 使用MySQL数据库的PHP应用程序的模块
简而言之,mysql扩展即mysql库是引用Oracle / mysql
...通用客户端库
名为libmysql。
这是支持mysql的原始php方法。MySQL提供了一个客户端api库,并使用该c库,创建了一个php扩展,它依赖于libmysql实现着名的mysql_函数,允许php与mysql通信。
mysqlnd包(其中nd代表"本机驱动程序")是一个项目的成果,它使mysql在php语言中最佳地工作。再次引用mysql网站:
mysqlnd库经过高度优化,可以与PHP紧密集成。MySQL客户端库无法提供相同的优化,因为它是一个通用的客户端库。
mysqlnd库使用PHP内部C基础架构无缝集成到PHP中。此外,它还使用PHP内存管理,PHP Streams(I / O抽象)和PHP字符串处理例程。例如,mysqlnd使用PHP内存管理可以通过使用只读变量(写入时复制)来节省内存,并使mysqlnd适用于PHP内存限制。
除了这些好处之外,还有一些有趣的增强功能和对插件的支持,这些插件可能是您作为开发人员或系统管理员特别感兴趣的。
一般情况下,你的代码不应该破坏,因为api在mysqlnd下应该和旧的mysql库一样。
结论
总之,您希望现在和将来使用 mysqlnd 。