php的53個小知識點

2021-08-20 13:26:31 字數 1784 閱讀 2988

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函式的四倍。

12、如果乙個字串替換函式,可接受陣列或字元作為引數,並且引數長度不太長,那麼可以考慮額外寫一段替換**,使得每次傳遞引數是乙個字元,而不是只寫一行**接受陣列作為查詢和替換的引數。

13、使用選擇分支語句(譯註:即switch case)好於使用多個if,else if語句。

14、用@遮蔽錯誤訊息的做法非常低效,極其低效。

15、開啟apache的mod_deflate模組,可以提高網頁的瀏覽速度。

16、資料庫連線當使用完畢時應關掉,不要用長連線。

17、錯誤訊息代價昂貴。

18、在方法中遞增區域性變數,速度是最快的。幾乎與在函式中呼叫區域性變數的速度相當。

19、遞增乙個全域性變數要比遞增乙個區域性變數慢2倍。

20、遞增乙個物件屬性(如:$this->prop++)要比遞增乙個區域性變數慢3倍。

21、遞增乙個未預定義的區域性變數要比遞增乙個預定義的區域性變數慢9至10倍。

22、僅定義乙個區域性變數而沒在函式中呼叫它,同樣會減慢速度(其程度相當於遞增乙個區域性變數)。php大概會檢查看是否存在全域性變數。

23、方法呼叫看來與類中定義的方法的數量無關,因為我(在測試方法之前和之後都)新增了10個方法,但效能上沒有變化。

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

25、呼叫帶有乙個引數的空函式,其花費的時間相當於執行7至8次的區域性變數遞增操作。類似的方法呼叫所花費的時間接近於15次的區域性變數遞增操作。

26、apache解析乙個php指令碼的時間要比解析乙個靜態html頁面慢2至10倍。盡量多用靜態html頁面,少用指令碼。

27、除非指令碼可以快取,否則每次呼叫時都會重新編譯一次。引入一套php快取機制通常可以提公升25%至100%的效能,以免除編譯開銷。

28、盡量做快取,可使用memcached。memcached是一款高效能的記憶體物件快取系統,可用來加速動態web應用程式,減輕資料庫負載。對運算碼(op code)的快取很有用,使得指令碼不必為每個請求做重新編譯。

29、當操作字串並需要檢驗其長度是否滿足某種要求時,你想當然地會使用strlen()函式。此函式執行起來相當快,因為它不做任何計算,只返回在zval結構(c的內建資料結構,用於儲存php變數)中儲存的已知字串長度。但是,由於strlen()是函式,多多少少會有些慢,因為函式呼叫會經過諸多步驟,如字母小寫化(譯註:指函式名小寫化,php不區分函式名大小寫)、雜湊查詢,會跟隨被呼叫的函式一起執行。在某些情況下,你可以使用isset()技巧加速執行你的**。

php小知識點

php中echo和print都是輸出的作用,但是兩者之間還是有細微的差別。echo輸出後沒有返回值,但print有返回值,當其執行失敗時返回flase。因此可以作為乙個普通函式來使用,例如執行 r print hello world 變數 r的值將為1。而且 中echo語句的執行效率要略快於prin...

php函式和小知識點

語句 分支語句 a 5 if a 5 else if if.else if.else.if if的巢狀 switch a 迴圈語句 for i 0 i 10 i a 10 while a 0 函式四要素 返回型別,函式名 首字母大寫 引數,函式體 函式定義方式 function show 呼叫函式 ...

100個前端小知識點

1.jquery使用 元素 change 可以主動觸發onchange事件,但是僅僅是用於該事件僅適用於文字域 text field 以及 textarea 和 select 元素。同理有onclick 2.div如何在另乙個div裡邊居中 style margin auto left 0 righ...