從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,已經內置在源碼中
看了這麼多特點,有點矛盾,作為數據庫抽象層的PDO能把不同後端的特點發揮出來嗎?如果使用mysql作為數據庫的話mysqli是不是更好的選擇?我總覺得mysqli只是個過度產品,PDO才是未來的。
二、性能提高
很多人覺得web的瓶頸在db,所以app應用的性能毫不在乎,我認為主要是因為app擴展比db擴展要容易得多,所以才會產生db瓶頸,但這並不意味著可以不顧慮app的性能,畢竟最終還是要在app裡解決各種問題的,作為一名程序員編寫高質量的代碼是最基本的要求。程序的內存使用量少點和執行速度快點,在高並發下是有很效果的,有些時候你改動下實現方法,能提高幾十倍也很正常,當然如果付出要很多收獲很少的時候就不要太執著了,我覺得一定要有編寫高質量代碼的意識。
三、?:操作符
其實就是js裡的||,返回的結果不是邏輯類型,而是返回本來變量的值,例如 false ?: 123返回123,而不是true。語法就是有點怪怪! 1