• 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

  • 相关阅读:
    linux 下查看文件修改时间
    ubuntu 把软件源修改为国内源和更新
    新概念 Lesson 10 Tired and thirsty What's the matter? Are you all right? That's all right!
    新概念 Lesson 9 How do you do? 你好! our,your,their复数形式的形容词性物主代词
    English trip EM4 LP1 A GETTing To Konw You Teacher:Olivia
    [转] CVE-2019-1367 脚本引擎内存损坏漏洞
    English trip EM3 LP 1B Have a good weekend Teacher:Ryan
    I4-6 Surprise Teacher:Lamb Talk about Holidays and Festives People do what
    English trip EM3 LP 4B Home Design Relationship Teacher:Ryan
    English trip EM3 LP4A ROOMS Teacher:Lamb
  • 原文地址:https://www.cnblogs.com/wajika/p/6246656.html
Copyright © 2020-2023  润新知