`
月影无痕
  • 浏览: 1008522 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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. 


mysqldndmysql 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. PDOmysqlnd, 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

 

1
2
分享到:
评论
1 楼 u010620626 2017-04-10  
除了 libmysql 和 mysqlnd, 在 linux 系统上 php 和 MySQL是否也可以直接通过 socket 进行通讯,必须 php 编译参数指定 --with-mysql-sock=/tmp/mysql.sock ,然后在 mysql 编译参数指定 cmake .. -DMYSQL_UNIX_ADDR=/tmp/mysql.sock \ 

相关推荐

    php 5.3.0 x64 64位 PHP X64 64位

    PHP 5.3.0 x64 是一个针对64位操作系统的PHP版本,它专为处理大量数据和高内存利用率的应用程序设计。...然而,由于其已过时,现在推荐使用更现代的PHP版本,以获得更好的性能、安全性和社区支持。

    php-5.3.0-Win32-VC9-x86.zip

    标题中的"php-5.3.0-Win32-VC9-x86.zip"表明这是一个针对Windows 32位系统的PHP版本,具体是5.3.0版本,且使用了Visual C++ 9(VC9)编译器构建。这通常意味着它与Microsoft的.NET Framework 3.5兼容,因为VC9是该...

    php-5.3.0-Win32-VC6-x86.zip

    综上所述,这个压缩包提供了PHP 5.3.0的Windows 32位版本,包括核心库、安全组件、国际化支持和数据库连接能力,以及方便安装和使用的工具。它对于那些需要在Windows环境下进行PHP开发或者部署PHP应用程序的用户来说...

    APMServ5.2.6_php_5.3.0

    3. **PHP 5.3.0**:PHP(Hypertext Preprocessor)是一种广泛使用的开源脚本语言,尤其适合Web开发。PHP 5.3.0是PHP的一个重要版本,引入了命名空间(Namespaces)、晚期静态绑定(Late Static Bindings)、闭包...

    php5.3.0+php5.3.0-fpm-0.5.12+fontconfig-2.4.2+freetype-2.4.2+gd-2.0.35

    为了方便以后重新搭建php环境,存一份需要的包,如果有...php-5.3.0.tar.bz2 php-5.3.0-fpm-0.5.12.diff.gz fontconfig-2.4.2.tar.gz freetype-2.4.2.tar.gz gd-2.0.35.tar.gz jpegsrc.v9.tar.gz libpng-1.5.13.tar.gz

    PHP 5.3 (5.3.0) VC6 x86 Non Thread Safe

    这个版本在设计时并未考虑多线程环境的安全性,因此通常推荐用于单线程或不使用多线程的Apache服务器环境中。 PHP是一种广泛使用的开源服务器端脚本语言,特别适合于Web开发,可以嵌入到HTML中使用。PHP 5.3是其...

    QT5.3.0 登陆Demo

    QT5.3.0登陆Demo是一个基于QT5.3.0版本的登录示例项目,主要展示了如何在Qt环境中创建一个基本的用户登录界面。这个Demo涵盖了Qt编程的基础知识,包括UI设计、信号与槽机制、事件处理以及数据验证等核心概念。 首先...

    pagehelper-5.3.0-API文档-中文版.zip

    赠送jar包:pagehelper-5.3.0.jar; 赠送原API文档:pagehelper-5.3.0-javadoc.jar; 赠送源代码:pagehelper-5.3.0-sources.jar; 赠送Maven依赖信息文件:pagehelper-5.3.0.pom; 包含翻译后的API文档:pagehelper...

    bootstrap-5.3.0.zip

    通过"说明.pdf",开发者可以学习如何有效地使用Bootstrap 5.3.0,而"bootstrap-5.3.0-alpha1-dist" 提供了可以直接在项目中使用的预编译文件。这个压缩包为开发者提供了一个强大且易用的工具集,加速了响应式网页...

    商业源码-编程源码-PHPDisk网盘系统GBK版 v5.3.0.zip

    总结,PHPDisk网盘系统GBK版 v5.3.0是一个适合商业使用的中文网络存储解决方案,它提供了全面的文件管理功能,并注重用户体验和安全性。对于需要搭建内部文件分享平台或提供云存储服务的企业来说,是个不错的选择。

    QT5.3.0 简单多线程开发

    在QT5.3.0中使用多线程,首先你需要继承`QThread`并重写`run()`方法,这是线程的主要执行体。然后创建线程实例,并启动线程。例如: ```cpp class MyThread : public QThread { Q_OBJECT public: void run() ...

    echarts-5.3.0 最新echarts包

    ECharts 5.3.0 是该库的一个版本,提供了丰富的图表类型、精美的图表设计以及强大的交互功能,是前端开发人员进行数据可视化的得力工具。在这个版本中,我们可能会发现一些性能优化、新特性、bug修复以及对旧版本的...

    ISP程序 GProbe 5.3.0

    ISP程序 GProbe 5.3.0ISP程序 GProbe 5.3.0ISP程序 GProbe 5.3.0ISP程序 GProbe 5.3.0ISP程序 GProbe 5.3.0ISP程序 GProbe 5.3.0ISP程序 GProbe 5.3.0ISP程序 GProbe 5.3.0ISP程序 GProbe 5.3.0ISP程序 GProbe 5.3.0...

    itextsharp-all-5.3.0

    - **itextsharp-dll-core-5.3.0.zip**:这是iTextSharp核心库的DLL文件,用于在项目中引用并直接使用iTextSharp的功能。 - **itextsharp-src-xtra-5.3.0.zip**:这个文件同样包含了一些扩展功能的源代码,可能包括...

    php-5.3.0-nts-Win32-VC9-x86.zip

    php5.3.0版应用程序非安装版。Windows 下的php开发软件。直接解压后进行相关设置即可使用。建议配合Apache使用。该版本好像只支持CGI方式调用。具体配置请参见本人的日志,(以CGI方式运行PHP,PHP_CGI)...

    OpenLayers v5.3.0 release

    4. **例子(Examples)**:压缩包中的"examples"目录包含了各种示例代码,展示如何使用OpenLayers创建不同类型的地图应用。这些实例是学习和理解库功能的好资源,涵盖了从基本的地图加载到复杂交互的各种场景。 5. ...

    lua5.3.0开发包

    Lua 5.3.0 开发包是一款小巧而强大的脚本语言,被广泛应用于游戏开发、嵌入式系统以及各种应用程序的扩展。这个压缩包包含了你需要的所有资源来在Visual Studio (VS)环境中构建和使用Lua静态库。让我们深入探讨如何...

    php-5.3.0-fpm-0.5.12

    php-5.3.0-fpm-0.5.12

    VNC-5.3.0-Windows.zip

    VNC(Virtual Network Computing)是一...总的来说,VNC-5.3.0-Windows 是一个强大的远程桌面解决方案,它的使用可以帮助用户轻松实现远程访问和控制,提升工作效率,同时也需要注意安全风险,合理配置以保障系统安全。

    Postman-win64-5.3.0

    标题中的"Postman-win64-5.3.0"指的是适用于Windows 64位系统的Postman版本5.3.0。这个版本的Postman为用户提供了一套全面的接口调试功能,帮助开发者有效地进行HTTP请求的发送和响应的接收分析。 首先,Postman...

Global site tag (gtag.js) - Google Analytics