提升運行效率 php不得不知道的優化建議

PHP是流行的腳本開發語言,相對於Java、C等編譯語言,一次編譯,到處運行,效率上是比腳本類語言要快的;而PHP是通過Zend語言引擎進行解析的,可以將其作爲Web服務器的內嵌模塊或者通過Socket與服務器進行通訊,提升PHP的執行效率,掌握一些優化技巧和建議總是有好處的。

1、用單引號替代雙引號引用字符串。

2、將類的方法定義成static。

3、$row['id']代替$row[id]。

4、echo代替print進行輸出。

5、運用foreach代替while和for循環,或者在for循環前計算循環最大值。

6、註銷那些不用的變量尤其是大數組,以便釋放內存。

7、儘量避免使用__get,__set,__autoload這些魔法常量。

8、require_once()比require代價昂貴。

9、include文件時儘量使用絕對路徑,少用iniset()來設置include_path。

10、使用$_SERVER['REQUEST_TIME']要好於time(),對於計算腳本運行時間。

11、函數代替正則表達式完成相同功能。

12、str_replace函數比preg_replace函數快,但strtr函數的效率比str_replace函數效率快。

13、字符串替換函數的形參儘量簡單。

14、使用選擇分支語句switch case優於使用多個if,else if語句。

15、儘量避免使用@屏蔽錯誤消息。

16、打開apache的mod_deflate模塊,可以提高網頁的瀏覽速度。

17、數據庫連接當使用完畢時應關掉,不要用長連接。

18、錯誤消息代價昂貴。

19、在方法中遞增局部變量,速度是最快的。幾乎與在函數中調用局部變量的速度相當。

20、遞增一個全局變量要比遞增一個局部變量慢近2倍。

21、遞增一個對象屬性(如:$this->prop++)要比遞增一個局部變量慢3倍。

22、遞增一個未預定義的局部變量要比遞增一個預定義的局部變量慢約9至10倍。

23、僅定義一個局部變量而沒在函數中調用它,同樣會減慢速度。

24、方法調用看來與類中定義的方法的數量無關。

25、派生類中的方法運行起來要快於在基類中定義的同樣的方法。

26、調用帶有一個參數的空函數,其花費的時間相當於執行7至8次的局部變量遞增操作。類似的方法調用所花費的時間接近於15次的局部變量遞增操作。

27、Apache解析PHP腳本的時間要比解析靜態HTML頁面慢很多,儘量多用靜態HTML頁面,少用腳本。

28、除非腳本可以緩存,否則每次調用時都會重新編譯一次,引入一套PHP緩存機制,以免除編譯開銷。

29、應用層必要時作緩存,可使用memcache或者redis等nosql,nosql是高性能的內存對象緩存系統,可用來加速動態Web應用程序,減輕數據庫負載。

30、當操作字符串並需要檢驗其長度是否滿足某種要求時,可以使用strlen()函數。在某些情況下,也可以使用isset() 技巧加速執行你的代碼,如strlen($foo) 的速度比!isset($foo{5})慢。

31、當執行變量$i的遞增或遞減時,$i++會比++$i慢一些。這種差異是PHP特有的。

32、面向對象往往開銷很大,每個方法和對象調用都會消耗很多內存。

33、並非要用類實現所有的數據結構,數組、哈希等有時也很有用。

34、不要把方法細分得過多,調用函數越多,開銷越大。

35、代碼分解成方法時,方法嵌套不宜過深,否則大大影響PHP的運行效率。

36、儘量使用PHP的內置函數。

37、如果在代碼中存在大量耗時的函數,可以考慮用C擴展的方式實現。

38、測試檢驗(profile)代碼,Xdebug調試器包含了檢驗程序,總體上可以顯示出代碼的瓶頸。

39、mod_zip可作爲Apache模塊,用來即時壓縮數據,並可讓數據傳輸量大概降低80%。

40、儘量使用file_get_contents和file_put_contents替代file、fopen、feof、fgets等系列方法的情況下,儘量用file_get_contents。

41、儘量的少進行文件操作。

42、優化Select SQL語句,在可能的情況下儘量少的進行Insert、Update操作。

43、儘可能的使用PHP內部函數。

44、循環內部儘量不要聲明變量,尤其是大變量、對象,每次分配都會有開銷。

45、多維數組儘量不要循環嵌套賦值。

46、用i+=1代替i=i+1,符合c/c++的習慣,效率還高。

47、對global變量,應該用完就unset()掉。

48、數據量大時,儘量採用分頁來取。

原文地址

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章