由於著作權問題,PHP5中沒有默認支持MySQL,不像以前的PHP4那樣可以直接使用MySQL函式。Mysql支持還需要把libmysql.dll複製到windows目錄,然後修改php.ini等等,比較麻煩。
它是新的函式館,libmysql有的功能它幾乎都有,但是mysqlnd並不像libmysql那樣作為通用庫,它是專門為PHP而寫的一個庫,用了PHP的內在管理函式以及一些網路流的函式。
PHP最近發布了5.3版本,在該版本當中,提供了一個mysqlnd庫,用來訪問MySQL資料庫,大大提升了PHP的資料庫訪問性能。
我們知道,PHP訪問MySQL資料庫,是通過MySQL資料庫的libmysql client庫,這個libmysql client是用C/C++編寫的,雖然一直以來PHP通過libmysql訪問數據庫性能也一直很好,但是卻無法利用PHP本身的很多特性。
mysqlnd提供了和Zend引擎高度的集成性,更加快速的執行速度,更少的記憶體消耗,利用了PHP的Stream API,以及客戶段快取機制。由於mysqlnd是透過Zend引擎,因此提供提供更多高級特性,以及有效利用Zend進行加速。
從下圖可以看出來,libmysql是直接訪問資料庫的,而mysqlnd是通過Zend訪問資料庫。
MySQLnd成為php 5.3中的默認mysql驅動,它有如下優點:
1、mysqlnd更容易編譯; 因為它是php源碼樹的一個組成部分
2、mysqlnd和php內部機制結合更緊密,是最佳化過的mysql驅動
3、mysqlnd更節省記憶體,從測試結果來看,比傳統的mysql擴展節省40%的記憶體
4、mysqlnd更快
5、mysqlnd提供了豐富的性能統計功能
6、mysqlnd使用了PHP license以避免不必要的著作權糾紛
這個改動應同時對MySQLi和pdo_mysql擴展生效。
編譯方法:
cd php-5.3.x
./configure --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd 加上你的參數
make
make install
phpinfo()截圖