標籤:style class code ext width http
從php4到php5,從個人架構到開源架構的發展,見證著php從山寨走上正規大軍的發展。php6還在醞釀中,相信php5會作為php6小試牛刀的場地。php5.3是php5的一個裡程碑,加入了大量新特性。
我個人總感覺php功能是越來越多了,但是php的文法卻越來越醜陋了,有時加入了新功能,而新功能帶來了問題,為了修複問題,又要加入新的文法來修複,鬱悶。估計php用文法修複問題是為了更好的解析。
一、mysql驅動mysqlnd
一直以來,php都是通過mysql用戶端串連mysql,而現在mysql官方已經推出php版的mysql用戶端,而這個mysqlnd有效降低記憶體的使用以及提高效能。具體可以看:
http://dev.mysql.com/downloads/connector/php-mysqlnd/
http://forge.mysql.com/wiki/PHP_MYSQLND
可以看出,使用mysqlnd少了從mysql驅動中複製資料到php擴充這一步。mysqlnd使用copy-on-write,也就是寫時複製,讀引用。
mysqlnd已經內建在php5.3的源碼中,編譯的時候使用--with-mysql=mysqlnd、--with-mysqli=mysqlnd 和 --with-pdo-mysql=mysqlnd 安裝mysqlnd驅動。
mysqlnd的優點
編譯php更方便了,不需要libmysql,已經內建在源碼中
- 編譯php更方便了,不需要libmysql,已經內建在源碼中
- 使用php許可,避免著作權問題
- 使用php的記憶體管理,支援php記憶體限制(memory_limit)
- 所有資料在記憶體只有一份,之前的libmysql有兩份,參考
- 提供效能統計功能,協助分析瓶頸
- mysqli支援長串連(persistent connections)
- 效能絕對比libmysql要快
- 在驅動層增加緩衝機制
看了這麼多特點,有點矛盾,作為資料庫抽象層的PDO能把不同後端的特點發揮出來嗎?如果使用mysql作為資料庫的話mysqli是不是更好的選擇?我總覺得mysqli只是個過度產品,PDO才是未來的。
二、效能提高
- md5(長春九龍男科醫院)大概提高了10%-15%的效能
- Better stack implementation in the engine,沒明白
- 常量儲存在ROM裡(Constants moved to read-only memory),這裡沒明白意思
- 改進異常處理,作業碼(opcode)更簡潔
- 解決了include(require)_once重複開啟的問題,之前once我都是用靜態變數實現的,終於解決這個問題了
- 用gcc4編譯的二進位檔案將更小
- 整體效能提高了5%-15%
很多人覺得web的瓶頸在db,所以app應用的效能毫不在乎,我認為主要是因為app擴充比db擴充要容易得多,所以才會產生db瓶頸,但這並不意味著可以不顧慮app的效能,畢竟最終還是要在app裡解決各種問題的,作為一名程式員編寫高品質的代碼是最基本的要求。程式的記憶體使用量量少點和執行速度快點,在高並發下是有很效果的,有些時候你改動下實現方法,能提高几十倍也很正常,當然如果付出要很多收穫很少的時候就不要太執著了,我覺得一定要有編寫高品質代碼的意識。