php提高網(wǎng)站效率的技巧
程序員在編寫程序時,總是想要使自己的程序占用資源最小,運(yùn)行速度更快,代碼量更少。往往我們在追求這些的同時卻失去了很多東西。優(yōu)化的目的是花最少的代價換來最快的運(yùn)行速度與最容易維護(hù)的代碼。以下就幾點(diǎn)PHP的優(yōu)化做下總結(jié):
1、in_array的用法
避免在大的數(shù)組上使用in_array(),同時避免在循環(huán)中對包含20個以上元素的數(shù)組使用這個函數(shù)。in_array()會非常消耗資源.對于小的數(shù)組這種影響可能很小,但是在一個循環(huán)中檢查大數(shù)組可能會需要好幾秒鐘的時間。如果您確實(shí)需要這個功能,請使用isset()來查找數(shù)組元素。實(shí)際上是使用鍵名來查詢鍵值。調(diào)用isset($array[$var])會比in_array($var,array_keys($array))要快得多。
2、數(shù)組鍵名
在PHP中,使用不經(jīng)單引號包含的字符串作為數(shù)組鍵名是合法的,但是我們不希望如此--鍵名應(yīng)該總是由單引號包含而避免引起混淆。注意這是使用一個字符串,而不是使用變量做鍵名的情況。
例如:
// 不好的寫法 $foo = $assoc_array[blah]; // 好的寫法 $foo = $assoc_array['blah']; // 不好的寫法 $foo = $assoc_array["$var"]; // 好的寫法 $foo = $assoc_array[$var];
3、字符串表達(dá)
在PHP中用兩種不同的方式來表示一個字符串-單引號或者雙引號。主要的區(qū)別在于語法解釋器會對雙引號表示的字符串進(jìn)行變量替換,而不會處理單引號表示的字符串。因此您應(yīng)該總是使用單引號,除非您真的需要在字符串中處理變量。這樣,我們可以減少程序運(yùn)行消耗,因為語法解釋器不需要每次多處理一大堆根本沒有變量的字符串。
同樣,如果您在函數(shù)調(diào)用中使用了一個字符串變量作為參數(shù),您不需要將這個變量包含在引號里。這會導(dǎo)致語法解釋器多做好多無用功。記住,幾乎所有雙引號中的轉(zhuǎn)義符對于單引號都是無效的。您需要留意以上的規(guī)則,但是有時候為了代碼的可讀性,可以適當(dāng)?shù)钠评?/p>
例如:
// 不好的寫法 $str = "This is a really long string with no variables for the parser to find."; do_stuff("$str"); // 好的寫法 $str = 'This is a really long string with no variables for the parser to find.'; do_stuff($str); // 有時候單引號不是那么合適 $post_url = $phpbb_root_path . 'posting.' . $phpEx . '?mode=' . $mode . '&start=' . $start; // 雙引號有時候能讓代碼行更集中 $post_url = "{$phpbb_root_path}posting.$phpEx?mode=$mode&start=$start";
4、循環(huán)定義中的操作
在比較部分如果存在運(yùn)算請一定要進(jìn)行優(yōu)化。因為這部分會在循環(huán)中的每一步進(jìn)行操作:
// 在每次循環(huán)中sizeof函數(shù)都要被調(diào)用 for ($i = 0; $i < sizeof($post_data); $i++) { do_something(); } // 您可以在循環(huán)起始部分對這個不變的量賦值 for ($i = 0, $size = sizeof($post_data); $i < $size; $i++) { do_something(); }
5、分支判斷,switchcase好于ifelse
使用分支語句要比用很多ifelse好很多。
6、不要濫用@操作符
不要濫用@操作符,看上去很簡單,但實(shí)際上用@比不用@效率要差幾倍。
特別不要在循環(huán)中使用@。
7、獲取時間的方法
很多時候我們習(xí)慣使用time()獲取當(dāng)前時間,但time()終歸是一個函數(shù),不如直接用$_SERVER['REQUEST_TIME']好一點(diǎn)。
8、字符串長度判斷
兩種寫法:
(1)if(strlen($str) < 5){/* do something */}
(2)if(isset($str[5])){ /* do something */ }
以上是小編在網(wǎng)上整理的php優(yōu)化技巧,希望對大家的學(xué)習(xí)有所幫助!
- 優(yōu)化PHP程序的方法小結(jié)
- PHP程序級守護(hù)進(jìn)程的實(shí)現(xiàn)與優(yōu)化的使用概述
- 優(yōu)化PHP代碼技巧的小結(jié)
- 有關(guān)PHP性能優(yōu)化的介紹
- php代碼書寫習(xí)慣優(yōu)化小結(jié)
- 提高PHP性能的編碼技巧以及性能優(yōu)化詳細(xì)解析
- PHP代碼優(yōu)化之成員變量獲取速度對比
- PHP代碼優(yōu)化的53個細(xì)節(jié)
- PHP小技巧之JS和CSS優(yōu)化工具M(jìn)inify的使用方法
- 50個PHP程序性能優(yōu)化的方法
- 淺談php優(yōu)化需要注意的地方
- 簡單說說PHP優(yōu)化那些事(經(jīng)驗分享)
- php導(dǎo)入大量數(shù)據(jù)到mysql性能優(yōu)化技巧
- php+mysql查詢優(yōu)化簡單實(shí)例
相關(guān)文章
PHP進(jìn)階學(xué)習(xí)之依賴注入與Ioc容器詳解
這篇文章主要介紹了PHP進(jìn)階學(xué)習(xí)之依賴注入與Ioc容器,結(jié)合實(shí)例形式詳細(xì)分析了依賴注入與Ioc容器概念、原理、用法及相關(guān)操作注意事項,需要的朋友可以參考下2019-06-06php 隨機(jī)排序廣告的實(shí)現(xiàn)代碼
博客流行在側(cè)邊欄放置 4 到 6 個 125x125 的廣告, 但一般的擺放順序存在問題. 如果廣告位置被固定, 各個位置的天然關(guān)注度肯定是不一樣的2011-05-05PHP數(shù)字前補(bǔ)0的自帶函數(shù)sprintf 和number_format的用法(詳解)
下面小編就為大家?guī)硪黄狿HP數(shù)字前補(bǔ)0的自帶函數(shù)sprintf 和number_format的用法(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-02-02Linux下進(jìn)行MYSQL編程時插入中文亂碼的解決方案
Linux下進(jìn)行MYSQL編程時插入中文亂碼的解決方案...2007-03-03PHP 導(dǎo)出數(shù)據(jù)到淘寶助手CSV的方法分享
其中將ECSHOP的數(shù)據(jù)轉(zhuǎn)到淘寶,原先是有51ecshop開發(fā)的ecshop助手有這個功能的,后來我打算自己直接在網(wǎng)頁實(shí)現(xiàn),就測試了下了,花了一段時間,共享出來希望對大家有所幫助,可以節(jié)省時間。2010-02-02