本文目錄一覽:
提高PHP編程效率的53個要點
用單引號代替雙引號來包含字元串 這樣做會更快一些 因為PHP會在雙引號包圍的字元串中搜尋變數 單引號則不會 注意 只有echo能這麼做 它是一種可以把多個字元串當作參數的「函數」(譯註 PHP手冊中說echo是語言結構 不是真正的函數 故把函數加上了雙引號)
如果能將類的方法定義成static 就盡量定義成static 它的速度會提升將近 倍
$row[』id』] 的速度是$row[id]的 倍
echo 比 print 快 並且使用echo的多重參數(譯註 指用逗號而不是句點)代替字元串連接 比如echo $str $str
在執行for循環之前確定最大循環數 不要每循環一次都計算最大值 最好運用foreach代替
註銷那些不用的變數尤其是大數組 以便釋放內存
盡量避免使用__get __set __autoload
require_once()代價昂貴
include文件時盡量使用絕對路徑 因為它避免了PHP去include_path里查找文件的速度 解析操作系統路徑所需的時間會更少
如果你想知道腳本開始執行(譯註 即伺服器端收到客戶端請求)的時刻 使用$_SERVER[『REQUEST_TIME』]要好於time()
函數代替正則表達式完成相同功能
str_replace函數比preg_replace函數快 但strtr函數的效率是str_replace函數的四倍
如果一個字元串替換函數 可接受數組或字元作為參數 並且參數長度不太長 那麼可以考慮額外寫一段替換代碼 使得每次傳遞參數是一個字元 而不是只寫一行代碼接受數組作為查詢和替換的參數
使用選擇分支語句(譯註 即switch case)好於使用多個if else if語句
用@屏蔽錯誤消息的做法非常低效 極其低效
打開apache的mod_deflate模塊 可以提高網頁的瀏覽速度
資料庫連接當使用完畢時應關掉 不要用長連接
錯誤消息代價昂貴
在方法中遞增局部變數 速度是最快的 幾乎與在函數中調用局部變數的速度相當
遞增一個全局變數要比遞增一個局部變數慢 倍
遞增一個對象屬性(如 $this prop++)要比遞增一個局部變數慢 倍
遞增一個未預定義的局部變數要比遞增一個預定義的局部變數慢 至 倍
僅定義一個局部變數而沒在函數中調用它 同樣會減慢速度(其程度相當於遞增一個局部變數) PHP大概會檢查看是否存在全局變數
方法調用看來與類中定義的方法的數量無關 因為我(在測試方法之前和之後都)添加了 個方法 但性能上沒有變化
派生類中的方法運行起來要快於在基類中定義的同樣的方法
調用帶有一個參數的空函數 其花費的時間相當於執行 至 次的局部變數遞增操作 類似的方法調用所花費的時間接近於 次的局部變數遞增操作
Apache解析一個PHP腳本的時間要比解析一個靜態HTML頁面慢 至 倍 盡量多用靜態HTML頁面 少用腳本
除非腳本可以緩存 否則每次調用時都會重新編譯一次 引入一套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函數的四倍。
如何提高php的fast cgi 效率
提高php的fast cgi 效率方法如下:
1、ISAPI運行模式
ISAPI即Internet Server Application Program Interface,是微軟提供的一套面向Internet服務的API介面,一個ISAPI的DLL,可以在被用戶請求激活後長駐內存,等待用戶的另一個請求,還可以在一個DLL里設置多個用戶請求處理函數,此外,ISAPI的DLL應用程序和WWW伺服器處於同一個進程中,效率要顯著高於CGI。(由於微軟的排他性,只能運行於windows環境)
2、APACHE2HANDLER
PHP作為Apache模塊,Apache伺服器在系統啟動後,預先生成多個進程副本駐留在內存中,一旦有請求出現,就立即使用這些空餘的子進程進行處理,這樣就不存在生成子進程造成的延遲了。這些伺服器副本在處理完一次HTTP請求之後並不立即退出,而是停留在計算機中等待下次請求。對於客戶瀏覽器的請求反應更快,性能較高。
3、apache模塊的DLL運行模式
此運行模式是我們以前在windows環境下使用apache伺服器經常使用的,而在模塊化(DLL)中,PHP是與Web伺服器一起啟動並運行的。(是apache在CGI的基礎上進行的一種擴展,加快PHP的運行效率)
怎樣高效率的學習php?
PHP需要掌握的知識還是比較多的,最基本的比如:PHP基本的語法、php框架以及CMS、mysql資料庫設計表、mysql資料庫的基本SQL語句。現在一般PHP的都得會前端,那就包括:js/ajax、html、css。如果更高點層次的就是linux伺服器。
PHP攻城獅踐行學習路線圖:
1、用集成環境安裝PHP環境,一定要記住這一點,不要自己分開去裝,尤其是自學的朋友。不然你會覺得很複雜,會沒有信心學下去的。也要注意任何高手都不是一蹴而就的,是一步一步,不同的階段歷練才有最後的沉澱。
2、先了解一些基本的變數類型,語法,函數,基本邏輯,寫簡單的代碼。前期以嘗試,培養興趣為主。這段時間是打基礎很好的時候,這個會影響你後面的發展,不過也可以在後期去完善。
3、這時候你可能覺得PHP就這樣,沒什麼難度,或者有的覺得太難了,簡直一臉疑惑。這個到底有什麼用。在這時候一定要堅持下來,可以試試先放一下,別太較真。慢慢的困惑你的會被你領悟的。這時,建議學習html+css+js,緩解自己的壓力,這個相對簡單,簡歷信心。尤其是js,總結其實有相同的思路,可以結合著一起體會。
4、這些都感覺有80%了解就可以先放放了,現在在學習MySQL,也是先了解基礎的。這個是幹什麼的,我可以用它做什麼。因為之前裝的集成環境。為什麼感覺是凌亂的,我想告訴你的是,一是不要在自己沒能力解決問題的時候死磕,浪費時間,喪失信心。這時候我們要做的是學習壯大自己,不要灰心。二是我本來覺得這一切都了解才是完整的。我們的目標也是要把這些都做好,這才是一個合格的PHP程序員。
5、這一切都順利的話,你基本離預設的目標不遠了,完成了整個學習的70%了。後面的是在之前的基礎上升華。把HTML和css、js結合、靜態文件和PHP結合、PHP和MySQL結合。這個階段可能越到的問題會異常的多,一定要學會解決問題。網上很多都是答案,同樣你要學會問問題。
6、這些之後你基本已經快到學習的尾聲了,但還缺少經驗。這時,你可以看一些網上開源的cms,例如織夢,國內用的多,越到問題好解決。看看一些視頻(網上免費的很多),查漏補缺,總結歸納形成自己的知識體系。是時候該準備慶祝下自己這段的時間沒有白費(一般2到3各月,看平時每天花的時間),基本成為一個合格的PHP程序員了。也該恭喜你了,其實並不那麼難。堅持,堅持;努力,努力;學習,學習
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/231827.html