PHP 5.3.0以上推薦使用mysqlnd驅動

來源: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
發佈了44 篇原創文章 · 獲贊 36 · 訪問量 18萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章