熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> PHP編程 >> 正文

提高PHP運行速度的小技巧分享

2013-11-15 12:26:42  來源: PHP編程 

    使用PHP的最大個優勢就是速度快一般情況下PHP總是具有足夠的速度支持Web內容動態生成許多時候甚至無法找出比它更快的方法然而當面對龐大的訪問量高負荷的應用有限的帶寬以及其他各種帶來性能瓶頸的因素時就需要考慮怎樣提高PHP的性能了

  
代碼優化

  
代碼優化不僅僅是寫出干淨和清晰的代碼而是對代碼進行一定的簡化可以使用Zend Optimizer來自動幫助完成這些繁雜的工作Zend Optimizer可以從Zend Technologies的網站免費得到但必須同意它的許可約定因為它不是以GPL方式發行的它的原理很簡單即通過檢測Zend引擎產生的中間代碼並對它進行優化從而獲得更高的執行速度

  
在使用了Zend Optimizer後復雜的PHP源程序的執行效率馬上會得到顯著提高缺點是優化後的代碼可讀性下降給代碼修改帶來困難

  
Zend Optimizer的安裝方法非常簡單只要根據用戶使用的平台下載相關的預編譯版本把下面行代碼加入到phpini文件中重新啟動Web服務器就行了

  
zend_optimizeroptimization_level=

  
zend_extension=″/path/to/ZendOptimizerso″

  
zend_loaderenable=Off

  
額外增加的第三行代碼是可選的因為禁用zend_loader將會使優化速度更快需要注意的是只有在不使用Zend Encoder Runtime的時候才可以禁用zend_loader

  
使用緩存

  
如果PHP程序的規模很大那麼提高速度的辦法就是使用緩存現在已經有許多緩存方案可供選擇其中包括Zend CacheAPC和Afterburner Cache

  
上面這幾種都是“緩存模塊”(caching modules)第一次調用PHP文件時緩存模塊從PHP源代碼生成一些中間代碼並把這些中間代碼存儲在Web服務器的內存中以後再調用這些文件時就可以直接使用內存中“編譯”過的代碼這種方法確實能夠改善應用的性能因為它使得磁盤訪問量減低到了最少的程度(代碼已經讀取和解析)代碼直接在內存中運行使得服務器響應請求的速度大大提高

  
當然緩存模塊還會監視PHP源文件的變化必要時會重新緩存頁面從而防止用戶得到的頁面仍舊由過時的PHP代碼生成由於緩存模塊能夠明顯地降低服務器的負載提高PHP應用的響應效率因此它們非常適合於負載較大的網站使用

  
Zend Cache是Zend Technologies公司開發的商業軟件在第一次運行後PHP頁面的運行速度立刻會有很大的提高服務器的空閒資源也更多了缺點是它不是免費的但性價比還是很高的

  
Afterburner Cache是Bware Technologies公司開發的免費緩存模塊功能與Zend Cache基本一樣但提高性能方面比不上Zend Cache

  
APC(Alternative PHP Cache)是由Community Connect公司開發的另一種免費緩存模塊目前版本是可以從獲得對於產品應用來說它的性能很穩定而且也能在很大程度上提高響應請求的速度

    壓縮網頁內容

  
影響站點的訪問速度還有個重要因素那就是下載速度解決的辦法就是壓縮網頁內容對於純文本內容而言HTTP壓縮技術可壓縮至原大小的%以下從而提供%以上的數據傳輸節約雖然Web服務器會因為壓縮導致CPU占用的略微上升但可以節約大量用於傳輸的網絡IO

  
根據IETF規范大部分浏覽器都支持使用gzip壓縮算法進行內容壓縮也就是說可以先用gzip壓縮網頁內容然後發送到客戶端浏覽器浏覽器在接收的時候會自動解壓數據再顯示頁面這個過程對用戶來說是完全透明的同樣壓縮Web頁面的內容也有不同的方法

  
Mod_gzip是種開放源代碼的標准的Apache模塊也叫互聯網內容加速模塊可以將它和Apache一起編譯也可以作為DSO使用相對於普通的浏覽過程它可以節省%左右的流量Mod_gzip不僅可以壓縮靜態的內容如HTMLXML而且對動態生成的包括SQLJava WMLVRML等產生的內容在服務器端進行實時壓縮並傳輸其壓縮效率驚人一般都為%~%

  
壓縮動態網頁的內容還可以使用classgzip來對php文件編碼classgzip通過在PHP腳本的開頭和結尾調用它的一些函數來壓縮網頁內容如果整個站點都需要這樣的壓縮可以在phpini文件中的auto_prepend和auto_append中調用這些函數但是會占用一定的系統開銷

  
PHP推出了種新的輸出緩沖的處理手段—ob_gzhandler它的作用和classgzip完全一樣區別是可以直接把它加到phpini文件中語法如下

  
output_handler = ob_gzhandler

  
這樣將激活PHP的輸出緩沖功能並在發送內容前進行壓縮如果不想在這裡設置只在需要的地方才改變這個默認設置(不壓縮)只要在需要壓縮的PHP源程序目錄中修改一下htaccess文件就行了語法如下

  
php_value output_handler ob_gzhandler

  
或者直接在PHP代碼中調用它

  
ob_start(“ob_gzhandler”)

  
輸出緩沖的效果確實很理想並且不會為服務器帶來額外的系統開銷要注意的一點是Netscape Communicator不支持圖像的壓縮因此除非知道訪問者都使用Internet Explorer否則必須禁止壓縮jpeg和gif圖象

  
其它技巧

  
在編程時使用一些小技巧也可以加快PHP的運行速度

  
)用i+=代替i=i+既符合c/c++的習慣效率相對還更高

  
)盡可能使用PHP內部函數

  
)能使用單引號字符串時盡量使用單引號字符串單引號字符串的效率要高於雙引號字符串

  
)用foreach代替while遍歷數組foreach的效率明顯高於while循環而且不需要調用reset函數


From:http://tw.wingwit.com/Article/program/PHP/201311/20963.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.