PHP性能優化


PHP性能優化
一 什么情況下會產生性能問題
    1.php語法使用不恰當
    2.使用php做了它不擅長的事
    3.php語言連接的服務不給力
    4.php自身的缺陷
    5.其他問題
二 為什么要解決php性能問題
  項目中或多或少都會有一些性能問題,php性能問題是其中一部分,占比一般30%-40%
三 php性能優化的解決方向
  php語言級的優化
    1.少寫代碼,多用php自身能力   代碼越長,執行時間越長
       1)使用內置函數,常量,變量  我們編寫的代碼要經過逐行檢索然后放到自身引擎中,通過引擎編譯最后執行,使用內置函數變量 預編譯好的,節省編譯時間,性能有了提升
       2)盡可能少用魔法函數   魔法函數性能並不佳,耗時較長
       3)錯誤抑制符  在底層操作代碼會多出begin_silence和end_silence,會產生額外的開銷,降低性能
    2.合理使用內存   大量使用內存會導致php運行緩慢,需要及時釋放,小心使用內存。 可以利用unset()及時釋放不使用的內存
    3.少用正則表達式   性能簡單,需要回溯,開銷大,性能低。可以利用字符串函數,代替正則
    4.避免在循環里面進行運算   可以將計算的表達式放到循環外,賦值給一個變量,再循環內直接使用變量
    5.減少密集型運算的業務  php適合銜接webserver和后端以及ui呈現,作為一個紐帶的作用。webserver來請求,交給php,php做一些參數處理,將請求發給后端,等待后端相應,再將信息傳遞給webserver
    6.務必使用帶引號的字符串來做鍵值   php會把沒有引號的鍵當作值常量,然后找常量,把這個常量當作key值輸出,會產生額外的開銷
   php周邊問題的優化
    周邊的服務:網絡環境,服務器環境,數據庫環境等
    優化分類:
    1.減少文件類的操作  讀寫內存<<讀寫數據庫<讀寫磁盤<讀寫網絡數據    最好從內存中讀取數據
    2.優化網絡請求   
      1)設置超時時間(連接超時 200ms,讀超時 800ms,寫超時 500ms)
      2)將串行請求並行化   使用curl_multi函數
    3.壓縮php接口輸出   有利於數據輸出,客戶端能更快獲得數據  壓縮占用服務器cpu,會給cpu增加額外開銷,重復字符多,壓縮效果較好
    4.緩存重復計算內容   多次請求,內容不變  
           接收請求,查看緩存,沒有緩存,進行查詢,返回給緩存,返回
           接收請求,查看緩存,有緩存,返回
           緩存常用於項目中的模板 smarty支持caching  cache_start
    5.重疊時間窗口思想  執行完所有項目耗時少  當后面的項目不依賴前一個項目時可用
    6.旁路方案  后面項目不依賴於前一項目可用,可以有多個旁路
              場景:smarty模板渲染和拼接
  php語言自身的分析,優化           底層C語言的分析優化
        利用opcode cache:可以用php擴展apc框架
    opcode cache:當解釋器完成對代碼的分析后,將他們生成可以直接運行的操作碼。目的是避免重復編碼,減少cpu和內存開銷

  php性能問題的具體分析
     工具:XHProf  facebook開源的一個php輕量級的性能分析工具
           性能開銷低,可以用在生產環境中,可以由程序開關控制是否進行profile


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM