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。

猜你喜欢

转载自blog.51cto.com/14409494/2415736