我们专注服务于当下互联网基础设施建设与云计算、大数据时代的各种需求!

php5.4.11中原生的mysql支持

问:Mysqlnd是什么?
答:Mysqlnd,全称是 MySQL Native Driver,MySQL原生驱动,简单说它是一个PHP官方的MySQL数据库驱动。

问:搞这个库干什么?
答:我估计最重要的是版权问题,这个库是自己人码代码的,用的PHP License,所以不会用到原来的libmysql之类的,避免版权纠纷。大家都知道,PHP4中MySQL函数是作为默认支持的,最明显的在Windows下安装,是不需要有个libmysql.dll,后来PHP5就一直要这个dll,这个dll应该是MySQL官方提供的。PHP不爽,自己写个算了,嗯。因此有了Mysqlnd。

问:它和mysql、mysqli有啥区别?
答:这两个函数库默认调用的是MySQL客户端库(By default the MySQL database extensions are configured to use MySQL Client Library直译)的,这个时候Linux上是需要安装MySQL客户端(MySQL客户端是操作工具,MySQL客户端库是编译库文件比如*.h),但是用Mysqlnd好像不用了,只需要直接with绑定一下mysqlnd即可:
–with-mysql=mysqlnd \
–with-mysqli=mysqlnd \
–with-pdo-mysql=mysqlnd \

问:我还能不能使用mysql_*、mysqli_*函数?
答:看到以上编译PHP的选项,就知道mysqlnd和mysql、mysqli函数库的关系了。Mysqlnd是更底层的驱动支持。设置了使用Mysqlnd后,这些函数库就会使用Mysqlnd来调用MySQL的API了。简单说,mysql_*、mysqli_*照用不误啦,和这两组函数库没啥太大影响。只不过是底层的调用被换掉而已。虚惊一场!
问:我没看出有啥好处?
答:好处就是自己写的代码,爽,独占!另外就是不需要用MySQL官方提供的Client Library了,原生支持嘛,安装PHP的时候不需要再折腾MySQL了(否则configure的时候是要指定MySQL Client Library的path的。–with-mysql[=DIR])。另外估计就是底层的,性能上的改善。