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

讓PHP引擎全速運轉的三個絕招

2013-11-15 12:43:24  來源: PHP編程 

  作為流行的 Web 編程語言 PHP 的最大優勢就是速度 PHP已經在這方面做的非常好了你幾乎找不到比它更快的腳本編程語言了但是如果你的應用負荷很大而帶寬又比較小或者有其他的瓶頸影響你的服務器性能那麼你不妨試試筆者為你開出的幾個藥方看看是否靈驗

  一代碼優化

  一談到代碼優化或許你想到的就是整齊明了的代碼但是本文的意思卻不是在此因為如果要尋求速度的話就要對PHP 源碼作相應的調整一般說來就是去掉多余的注釋讓代碼不可讀但是這對於一個具有良好素養的程序員來說簡直就是不可思議的好在Zend Technologies 公司發布了Zend 優化引擎可以幫助你做到這一點它現在是免費的但是你必須遵循 Zend Optimizer 許可這個產品可以對引擎產生的中間代碼進行優化

  安裝這個引擎比較簡單下載對應平台的版本以後解開壓縮文件然後在 phpini 文件裡面加上下面兩行重新啟動 Web 服務器就搞定了

zend_optimizeroptimization_level=

zend_extension=/path/to/ZendOptimizerso

zend_loaderenable=Off 

  如果是 Win 平台的應該是

zend_optimizeroptimization_level=

zend_extension_ts=C:\\path\\to\\ZendOptimizerdll

zend_loaderenable=Off 

  其實第三行是可選的因為看起來把 zend_loader 關掉能提高一點速度因此值得把這第三行放到 phpini 需要注意的是關掉的前提條件是你沒有在使用 Zend 加密程序

  緩沖

  如果想要更進一步提升速度我們就需要考慮采用緩沖技術了有一些可選的解決方案包括 Zend Cache (測試版本) APC 以及 Afterburner Cache另外還有 jpCache 等

  以上這些都是屬於緩沖模塊他們把第一次對 php 文件請求產生的中間代碼存儲在 Web 服務器的內存中然後對以後的請求返回編譯好的版本因為這樣減少了磁盤讀寫而且都在內存工作所以這個過程能顯著提升應用性能

  現成的這類產品比較多到底選擇誰呢?

  ◆Zend Cache 是一款不錯的商業產品在第一次加載那些很大的 PHP 頁面後你會明顯感受到速度的提升服務器會留出更多的資源可惜這個產品是要花銀子的但是在有些情形下你可不要吝啬這些銀子

  ◆Afterburner Cache 是 Bware Technologies 的產品目前還處於 Beta 版本看起來似乎和 Zend Cashe 一樣但是它不能達到 Zend Cache 那樣好的效果也不能和 Zend 優化引擎一起工作但是它是免費的所以我采用了這個模塊

  ◆APC (Alternative PHP Cache) 是 Community Connect 發布的又一個免費模塊看起來似乎可以用於生產環境了

  Web 內容壓縮

  對於日益擁擠的網絡來說節約帶寬就像節約用水一樣是十分值得提倡的根據IETF 標准大多數浏覽器應該支持使用 gzip 壓縮的內容也就是說你可以把用 gzip 壓縮的內容發送給浏覽器浏覽器會透明的解壓數據

  mod_gzip是 Remote Communications 公司推出的免費 Apache 模塊能把靜態的Web 內容壓縮後發送給浏覽器對於大多數靜態網頁來說這個模塊十分合適盡管Remote Communications公司的人說這個模塊支持所有那些 mod_php mod_perlmod 什麼產生的動態內容但是看起來還是不能工作從 mod_gzip 的郵件列表來看這個問題估計要到f 才能解決

  如果要壓縮動態內容的話我們可以采用classgzip_encodephp一個在腳本開始和結束時使用的 PHP 類對整個網站來說就是在 phpini 的 auto_prepend 和 auto_append 中調用其中的函數詳細你可以閱讀這個類的程序這個程序注釋得很好作者幾乎把什麼都告訴你了不過使用之前你的PHP要編譯為支持zlib

  對於PHP 來說一個新的解決方案就是使用 ob_gzhandler能達到和上面的類一樣的效果只要簡單的在 phpini 加入下面這句話就可以了

output_handler = ob_gzhandler ;

  這能讓 PHP 激活輸出緩沖並壓縮所有輸出如果有什麼特殊的理由不想讓所有的內容都壓縮輸出的話可以采用在 htaccess 文件中加入下面的行對對應目錄下的文件進行壓縮

php_value output_handler ob_gzhandler

  也可以直接在 PHP 代碼中加入

ob_start(ob_gzhandler);

  這項壓縮技術十分有效但是對 Netscape Communicator 用戶來說因為不能壓縮圖形文件所以看上去沒有完整的發送因此必須關閉對 jpeg 和 gif 文件的壓縮IE 沒有這個問題

  四結論

  采用本文所討論的技術應該能改善你的網站性能但是需要注意的是

  ◆PHP 可能不是導致瓶頸的原因仔細檢查其他原因(例如數據庫)

  ◆你不可能把服務器性能調節到最高狀態因此在埋怨PHP及其緩沖之前考慮是否該升級服務器了或者采用動態負載平衡技術

  ◆不要低估內容壓縮在你 Mb的內部網上面看到 PHP 應用的速度提升時不要忘記使用調制解調器的用戶在哪裡埋怨你的 Kb 的 HTML 頁面


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