PHP 5.3.0以上推荐使用mysqlnd驱动
1. 什么是 mysqlnd 驱动 ?
PHP 手册上的描述 :
MySQL Native Driver is a replacement for the MySQL Client Library (libmysql).
MySQL Native Driver is part of the official PHP sources as of PHP 5.3.0.
mysqldnd 即 mysql native driver 简写 , 即是由 PHP 源码提供的 mysql 驱动连接代码 . 它的目的是代替旧的 libmysql 驱动 .
传统的安装 php 的方式中 , 我们在编译 PHP 时 , 一般需要指定以下几项 : --with-mysql=/usr/local/mysql
--with-pdo-mysql=/usr/local/mysql
这实际上就是使用了 mysql 官方自带的 libmysql 驱动 , 这是比较老的驱动 , PHP 5.3 开始已经不建议使用它了 , 而建议使用 mysqlnd.
2. PDO 与 mysqlnd, libmysql 又是何种关系 ? PDO 是一个应用层抽象类 , 底层和 mysql server 连接交互需要 mysql 驱动的支持 . 也就是说无论你使用了何种驱动 , 都可以使用 PDO. PDO 是提供了 PHP 应用程序层 API 接口 , 而 mysqlnd, libmysql 则负责与 mysql server 进行网络协议交互 ( 它并不提供 php 应用程序层 API 功能 )
3. 为何要使用 mysqlnd 驱动 ? PHP 官方手册描述 : A.libmysql 驱动是由 mysql AB 公司 ( 现在是 oracle 公司 ) 编写 , 并按 mysql license 许可协议发布 , 所以在 PHP 中默认是被禁用的 .
而 mysqlnd 是由 php 官方开发的驱动 , 以 php license 许可协议发布 , 故就规避了许可协议和版权的问题 B. 因为 mysqlnd 内置于 PHP 源代码 , 故你在编译安装 php 时就不需要预先安装 mysql server 也可以提供 mysql client API (mysql_connect, pdo , mysqli), 这将减化一些工作量 .
C. mysqlnd 是专门为 php 优化编写的驱动 , 它使用了 PHP 本身的特性 , 在内存管理 , 性能上比 libmysql 更有优势 . php 官方的测试是 :libmysql 将每条记录在内存中保存了两份 , 而 mysqlnd 只保存了一份
D. 一些新的或增强的功能 增强的持久连接 引入特有的函数 mysqli_fetch_all()
引入一些性能统计函数 mysqli_get_cache_stats(), mysqli_get_client_stats(),
mysqli_get_connection_stats(),
使用上述函数 , 可很容易分析 mysql 查询的性能瓶颈 !
SSL 支持 ( 从 php 5.3.3 开始有效 )
压缩协议支持
命名管道支持 (php 5.4.0 开始有效 )
4. 看到这里 , 你可能跃跃欲试 , 很想使用 mysqlnd 驱动 , 本节描述如何使用 mysqlnd 驱动 提示 : 如果使用 mysqlnd, 并不需要预先安装 mysql
编译 php 时 , 修改以下几个项参数即可 --with-mysql= mysqlnd \
--with-mysqli=mysqlnd \
--with-pdo-mysql =mysqlnd
验证 : 如果在 phpinfo 输出的 mysql 项中发现 client API Version : mysqlnd, 说明 mysqlnd 驱动安装成功 .
另外 , 附一个可用于生产环境的 php 的编译参数列表 ./configure --prefix=/usr/local/php \
--with-mysql=mysqlnd \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd
--with-iconv-dir \
--with-freetype-dir \
--with-jpeg-dir \
--with-png-dir \
--with-zlib \
--with-libxml-dir \
--enable-xml \
--disable-rpath \
--enable-bcmath \
--enable-shmop \
--enable-sysvsem \
--enable-inline-optimization \
--with-curl \
--with-mcrypt \
--with-curlwrappers \
--enable-mbregex \
--enable-fpm \
--enable-mbstring \
--with-gd \
--enable-gd-native-ttf \
--with-openssl \
--with-mhash \
--enable-pcntl \
--enable-sockets \
--with-xmlrpc \
--enable-zip \
--enable-soap \
--without-pear
PHP 5.3.0以上推荐使用mysqlnd驱动的更多相关文章
- [转]PHP 5.3.0以上推荐使用mysqlnd驱动
我们一般的使用场景,比较少关注PHP版本的问题,而且市面上提供的PHP运行环境都还是5.2系列的. 原文:http://zhangxugg-163-com.iteye.com/blog/1894990 ...
- PHP 5.3以上版本推荐使用mysqlnd驱动
什么是mysqlnd?mysqldnd(MySQL native driver)是由PHP源码提供的mysql驱动连接代码.它的目的是代替旧的libmysql驱动. 传统的安装php的方式中,我们在编 ...
- C#5.0之后推荐使用TPL(Task Parallel Libray 任务并行库) 和PLINQ(Parallel LINQ, 并行Linq). 其次是TAP(Task-based Asynchronous Pattern, 基于任务的异步模式)
学习书籍: <C#本质论> 1--C#5.0之后推荐使用TPL(Task Parallel Libray 任务并行库) 和PLINQ(Parallel LINQ, 并行Linq). 其次是 ...
- 【转】学习Flex ActionScript 3.0 强烈推荐电子书
学习Flex ActionScript 3.0 强烈推荐电子书 AdvancED ActionScript 3.0 Animation(<Make things move>姐妹篇,强烈推 ...
- 关于php的mysqlnd驱动
1.什么是mysqlnd驱动? PHP手册上的描述: MySQL Native Driver is a replacement for the MySQL Client Library (libmys ...
- php5.5.* mysqlnd驱动安装
1.什么是mysqlnd驱动? PHP手册上的描述: MySQL Native Driver is a replacement for the MySQL Client Library (libmys ...
- nginx mysqlnd驱动引擎提升mysql性能
nginx mysqlnd驱动引擎提升mysql性能 前期要安装 mysql mysqli pdo_mysql libiconv 1 先去PHP官网下个 php-5.6.29.tar.gz wget ...
- Win10下轻松安装centos7.0(推荐)
Windows10下安装centos7.0虚拟机环境 Windows10自带了一个类似Vmware虚拟化产品Hyper-V管理器 如果没有找到这个的小伙伴可以从菜单中的windows管理工具找到如图: ...
- 0.96寸OLED显示屏驱动手册(SSD1306)
MCU IIC接口 IIC通信接口由从地址位SA0,IIC总线数据信号SDA(输出SDAout/D2和输入SDAin /D1)和IIC总线时钟信号SCL(D0).不管是数据线还是时钟线都需要连接上拉电 ...
随机推荐
- 【C#】第3章补充(一)如何在WPF中绘制正弦曲线
分类:C#.VS2015 创建日期:2016-06-19 使用教材:(十二五国家级规划教材)<C#程序设计及应用教程>(第3版) 一.要点 本例子提前使用了教材第13章介绍的基本知识. 二 ...
- Topshelf + ServiceModelEx + Nlog 从头构建WCF
前言 Topshelf可以很方便的构建windows service,而且在本地开发时也可以构建Console宿主,因此很方便WCF的开发. ServiceModelEx则提供了很多便利的方法来配置w ...
- 从NavigationController 下的UITableView中移除 header
this.AutomaticallyAdjustsScrollViewInsets = false; 解析:AutomaticallyAdjustsScrollViewInsets为系统自动为适应na ...
- 一个bug
bug原因: maven的project重新更新了一下project name,然后在更新过程中,卡死了,就强制退出.结果,就再也进不去eclipse了.看了eclipse的启动日志,各种报错,找不到 ...
- Enum 枚举小结 java **** 最爱那水货
import java.util.HashMap; import java.util.Map; /** * 收单行 大写首字母 和对应的编码<br/> * * ABC 农业银行<br ...
- 从源码角度理清memcache缓存服务
memcache作为缓存服务器,用来提高性能,大部分互联网公司都在使用. 前言 文章的阅读的对象是中高级开发人员.系统架构师. 本篇文章,不是侧重对memcache的基础知识的总结,比如se ...
- 高性能 Windows Socket 组件 HP-Socket v3.0.2 正式发布
HP-Socket 是一套通用的高性能 Windows Socket 组件包,包含服务端组件(IOCP 模型)和客户端组件(Event Select 模型),广泛适用于 Windows 平台的 TCP ...
- java集合-LinkedList
一.概述 LinkedList 与 ArrayList 一样实现 List 接口,只是 ArrayList 是 List 接口的大小可变数组的实现,LinkedList 是 List 接口链表的实现. ...
- 用T4 Template生成代码
1 T4语法 T4的语法与ASP.NET的方式比较类似.主要包括指令.文本块.控制块. 1.1 指令 指令主要包括template, output, assembly, import, incl ...
- iOS Assigning to 'id<XXXDelegate>' from incompatible type 'BViewController *__strong'
在使用代理的时候, BViewController *BVC = [[BViewController alloc]init]; self.delegate = BVC; 出现这样的警告Assignin ...