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驱动的更多相关文章

  1. [转]PHP 5.3.0以上推荐使用mysqlnd驱动

    我们一般的使用场景,比较少关注PHP版本的问题,而且市面上提供的PHP运行环境都还是5.2系列的. 原文:http://zhangxugg-163-com.iteye.com/blog/1894990 ...

  2. PHP 5.3以上版本推荐使用mysqlnd驱动

    什么是mysqlnd?mysqldnd(MySQL native driver)是由PHP源码提供的mysql驱动连接代码.它的目的是代替旧的libmysql驱动. 传统的安装php的方式中,我们在编 ...

  3. 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). 其次是 ...

  4. 【转】学习Flex ActionScript 3.0 强烈推荐电子书

    学习Flex ActionScript 3.0 强烈推荐电子书 AdvancED ActionScript 3.0 Animation(<Make things  move>姐妹篇,强烈推 ...

  5. 关于php的mysqlnd驱动

    1.什么是mysqlnd驱动? PHP手册上的描述: MySQL Native Driver is a replacement for the MySQL Client Library (libmys ...

  6. php5.5.* mysqlnd驱动安装

    1.什么是mysqlnd驱动? PHP手册上的描述: MySQL Native Driver is a replacement for the MySQL Client Library (libmys ...

  7. nginx mysqlnd驱动引擎提升mysql性能

    nginx mysqlnd驱动引擎提升mysql性能 前期要安装 mysql mysqli pdo_mysql libiconv 1 先去PHP官网下个 php-5.6.29.tar.gz wget ...

  8. Win10下轻松安装centos7.0(推荐)

    Windows10下安装centos7.0虚拟机环境 Windows10自带了一个类似Vmware虚拟化产品Hyper-V管理器 如果没有找到这个的小伙伴可以从菜单中的windows管理工具找到如图: ...

  9. 0.96寸OLED显示屏驱动手册(SSD1306)

    MCU IIC接口 IIC通信接口由从地址位SA0,IIC总线数据信号SDA(输出SDAout/D2和输入SDAin /D1)和IIC总线时钟信号SCL(D0).不管是数据线还是时钟线都需要连接上拉电 ...

随机推荐

  1. php.ini 配置详细选项

    php.ini 或 php3.ini 是 PHP 在启动时会读取的配置文件.该文件的存放路径为 /usr/local/lib/.在 PHP 3.x 版的配置文件为 php3.ini:而在 PHP 4. ...

  2. 不可或缺 Windows Native (17) - C++: 类与对象

    [源码下载] 不可或缺 Windows Native (17) - C++: 类与对象 作者:webabcd 介绍不可或缺 Windows Native 之 C++ 类与对象 示例1.类的设计CppE ...

  3. RPM Version Comparison

    https://fedoraproject.org/wiki/Archive:Tools/RPM/VersionComparison?rd=Tools/RPM/VersionComparison ht ...

  4. Guava学习笔记:Guava新增集合类型-Bimap

    BiMap提供了一种新的集合类型,它提供了key和value的双向关联的数据结构. 通常情况下,我们在使用Java的Map时,往往是通过key来查找value的,但是如果出现下面一种场景的情况,我们就 ...

  5. [转]浅谈php web安全

    原文地址:http://blogread.cn/it/article/6086?f=wb 前言: 首先,笔记不是web安全的专家,所以这不是web安全方面专家级文章,而是学习笔记.细心总结文章,里面有 ...

  6. jQuery Danmmu Player 弹幕视频

    Danmmu Player是基于jQuery的弹幕视频插件.当在看视频的时候,同时发表自己的观点,这样很好的提高用户互动效果.其实也就是在视频界面上做一个滚动展示动画效果,这样的聊天互动视频效果我们叫 ...

  7. HTML表格边框的设置小技巧

    对于很多初学HTML的人来说,表格<table>是最常用的标签了,但对于表格边框的控制,很多初学者却不甚其解. 对于很多初学HTML的人来说,表格<table>是最常用的标签了 ...

  8. [DeviceOne开发]-地区选择

    一.简介 该demo主要通过do_ComboBox和do_Picker的selectChanged事件,实现省市县三级联动的功能 二.效果图 三.源码地址 https://github.com/do- ...

  9. sharepoint2013的最少下载策略概述(MDS)

    该策略是 SharePoint 2013 中的一种新功能,通过在用户导航到新页面时仅发送差异内容来减少页面加载时间. 最少下载策略 (MDS) 是 SharePoint 2013 中的一种新技术,可减 ...

  10. 记Ubuntu开机黑屏及解决过程

    之前遇到一次Ubuntu因为失误卸载了xinit.xserver的原因,导致开机黑屏无法进入系统,实际上当时是第一次遇到这种情况,因此花了点时间自己摸索,事后想来解决方案还是比较简单的,从目前的观点来 ...