本文目錄一覽:
php是解釋語言,有什麼方法提高php的運行速度
代碼優化
代碼優化不僅僅是寫出乾淨和清晰的代碼,而是對代碼進行一定的簡化。可以使用Zend Optimizer來自動幫助完成這些繁雜的工作。Zend Optimizer可以從Zend Technologies的網站免費得到,但必須同意它的許可約定,因為它不是以GPL方式發行的。它的原理很簡單,即通過檢測Zend引擎產生的中間代碼,並對它進行優化,從而獲得更高的執行速度。
在使用了Zend Optimizer後,複雜的PHP源程序的執行效率馬上會得到顯著提高,缺點是優化後的代碼可讀性下降,給代碼修改帶來困難。
Zend Optimizer的安裝方法非常簡單,只要根據用戶使用的平台,下載相關的預編譯版本,把下面2行代碼加入到php.ini文件中,重新啟動Web 服務器就行了:
zend_optimizer.optimization_level=15
zend_extension=″/path/to/ZendOptimizer.so″
zend_loader.enable=Off
額外增加的第三行代碼是可選的,因為禁用zend_loader將會使優化速度更快。需要注意的是,只有在不使用Zend Encoder Runtime的時候,才可以禁用zend_loader。
使用緩存
如果PHP程序的規模很大,那麼提高速度的辦法就是使用緩存。現在已經有許多緩存方案可供選擇,其中包括Zend Cache、APC和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公司開發的另一種免費緩存模塊,目前版本是2.0.4,可以從獲得。對於產品應用來說,它的性能很穩定,而且也能在很大程度上提高響應請求的速度。
壓縮網頁內容
影響站點的訪問速度還有1個重要因素,那就是下載速度。解決的辦法就是壓縮網頁內容。對於純文本內容而言,HTTP壓縮技術可壓縮至原大小的40%以下,從而提供60%以上的數據傳輸節約。雖然Web服務器會因為壓縮導致CPU佔用的略微上升,但可以節約大量用於傳輸的網絡IO。
根據IETF規範,大部分瀏覽器都支持使用gzip壓縮算法進行內容壓縮。也就是說,可以先用gzip壓縮網頁內容,然後發送到客戶端瀏覽器,瀏覽器在接收的時候會自動解壓數據,再顯示頁面。這個過程對用戶來說,是完全透明的。同樣,壓縮Web頁面的內容也有不同的方法。
Mod_gzip是1種開放源代碼的、標準的Apache模塊,也叫互聯網內容加速模塊。可以將它和Apache一起編譯,也可以作為DSO使用。相對於普通的瀏覽過程,它可以節省40%左右的流量。Mod_gzip不僅可以壓縮靜態的內容,如HTML、XML,而且對動態生成的,包括SQL、Java、WML、VRML等產生的內容,在服務器端進行實時壓縮並傳輸,其壓縮效率驚人,一般都為60%~85%。
壓縮動態網頁的內容,還可以使用class.gzip來對.php文件編碼,class.gzip通過在PHP腳本的開頭和結尾調用它的一些函數來壓縮網頁內容。如果整個站點都需要這樣的壓縮,可以在php.ini文件中的auto_prepend和auto_append中調用這些函數,但是會佔用一定的系統開銷。
PHP4.0.4推出了1種新的輸出緩衝的處理手段—ob_gzhandler,它的作用和class.gzip完全一樣,區別是可以直接把它加到php.ini 文件中,語法如下:
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的運行速度:
(1)用i+=1代替i=i+1,既符合c/c++的習慣,效率相對還更高。
(2)儘可能使用PHP內部函數。
(3)能使用單引號字符串時,盡量使用單引號字符串。單引號字符串的效率要高於雙引號字符串。
(4)用foreach代替while遍曆數組,foreach的效率明顯高於while循環,而且不需要調用reset函數。
使用第四個方法時要注意代碼的嚴謹性、安全性、不是所有的程序都適合用第四種方式優化。
怎樣提高php運行速度
有很多方面可以下手…以下是本人大致了解的….
數據庫操作是 php 項目性能的瓶頸所在, 多數情況下, php慢, 都是因為在等待數據庫響應
PHP每次版本發布, 基本都會涉及到性能的優化, 及時升級php也是一個手段 (需要注意代碼的兼容性)
使用加速擴展, 例如: apc, opcache 等. 該類擴展緩存了腳本文件解析編譯生成的opcode.
php是跑在 zend vm 上的, 在php執行的流程中, 需要加載腳本文件, 然後做詞法語法解析, 然後再編譯生成opcode, 接着執行. 緩存opcode 就是為了重複加載, 解析, 編譯的過程, 從而起到加速php的作用.
其它就是編碼上功夫了, 這需要一個經驗的累積.
提高PHP開發效率的技巧
用單引號代替雙引號來包含字符串,這樣做會更快一些。因為PHP會在雙引號包圍的字符串中搜尋變量,單引號則不會,注意:只有echo能這麼做,它是一種可以把多個字符串當作參數的“函數”(譯註:PHP手冊中說echo是語言結構,不是真正的函數,故把函數加上了雙引號)。
1、如果能將類的方法定義成static,就盡量定義成static,它的速度會提升將近4倍。
2、$row[’id’] 的速度是$row[id]的7倍。
3、echo 比 print 快,並且使用echo的多重參數(譯註:指用逗號而不是句點)代替字符串連接,比如echo $str1,$str2。
4、在執行for循環之前確定最大循環數,不要每循環一次都計算最大值,最好運用foreach代替。
5、註銷那些不用的變量尤其是大數組,以便釋放內存。
6、盡量避免使用__get,__set,__autoload。
7、require_once()代價昂貴。
8、include文件時盡量使用絕對路徑,因為它避免了PHP去include_path里查找文件的速度,解析操作系統路徑所需的時間會更少。
9、如果你想知道腳本開始執行(譯註:即服務器端收到客戶端請求)的時刻,使用$_SERVER[‘REQUEST_TIME’]要好於time()。
10、函數代替正則表達式完成相同功能。
11、str_replace函數比preg_replace函數快,但strtr函數的效率是str_replace函數的四倍。
原創文章,作者:S0B93,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/127820.html