程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PHP 5.3新版特性淺析(1)

PHP 5.3新版特性淺析(1)

編輯:關於PHP編程

從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,已經內置在源碼中

  1. 編譯php更方便了,不需要libmysql,已經內置在源碼中
  2. 使用php許可,避免版權問題
  3. 使用php的內存管理,支持php內存限制(memory_limit)
  4. 所有數據在內存只有一份,之前的libmysql有兩份,參考上圖
  5. 提供性能統計功能,幫助分析瓶頸
  6. mysqli支持長連接(persistent connections)
  7. 性能絕對比libmysql要快
  8. 在驅動層增加緩存機制

看了這麼多特點,有點矛盾,作為數據庫抽象層的PDO能把不同後端的特點發揮出來嗎?如果使用mysql作為數據庫的話mysqli是不是更好的選擇?我總覺得mysqli只是個過度產品,PDO才是未來的。

二、性能提高

  1. md5()大概提高了10%-15%的性能
  2. Better stack implementation in the engine,沒明白
  3. 常量保存在ROM裡(Constants moved to read-only memory),這裡沒明白意思
  4. 改進異常處理,操作碼(opcode)更簡潔
  5. 解決了include(require)_once重復打開的問題,之前once我都是用靜態變量實現的,終於解決這個問題了
  6. 用gcc4編譯的二進制文件將更小
  7. 整體性能提高了5%-15%

很多人覺得web的瓶頸在db,所以app應用的性能毫不在乎,我認為主要是因為app擴展比db擴展要容易得多,所以才會產生db瓶頸,但這並不意味著可以不顧慮app的性能,畢竟最終還是要在app裡解決各種問題的,作為一名程序員編寫高質量的代碼是最基本的要求。程序的內存使用量少點和執行速度快點,在高並發下是有很效果的,有些時候你改動下實現方法,能提高幾十倍也很正常,當然如果付出要很多收獲很少的時候就不要太執著了,我覺得一定要有編寫高質量代碼的意識。

三、?:操作符

其實就是js裡的||,返回的結果不是邏輯類型,而是返回本來變量的值,例如 false ?: 123返回123,而不是true。語法就是有點怪怪! 1

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved