php語法使用不恰當
使用php語言做了它不擅長做的事
用php語言連線的服務不給力
php自身的短板
我也不知道的問題
php效能問題一般佔專案的30%左右,我們做專案優化的時候不要侷限於php
php語言級的效能優化
php周邊問題的效能優化
php語言自身分析、優化
優化點:少寫**,多用php自身能力
效能問題:自寫**冗餘較多,可讀性不佳,並且效能低
為什麼效能低?:
php**需要編譯解析為底層語言,這一過程每次請求都會處理一遍,開銷大。
php->scanner->exprs->parser->opcodes->output
好的方法:多使用php內建變數、常量、函式
總結:這些變數、常量、函式還是要死記硬背,不然關鍵的時候用的時候根本想不起來
優化點:盡可能少用魔法函式
情況描述:php提供的魔法函式,效能不佳
為什麼效能低?:為了給php程式猿省事
好的方法:盡可能規避使用php魔法函式
舉例:測試魔法函式__get()效能
總結:魔法函式本來就是用來方便程式設計師的,如果只是為了這一點點效能開銷就捨棄,得不償失,我覺得這個點也沒必要太較真
優化點:產生額外開銷的錯誤抑制符@
情況描述:php提供的錯誤抑制符只是為了方便「懶人」
@的實際邏輯:在**開始前、結束後,增加opcode,忽略報錯
好的建議:建議盡量不要使用@錯誤抑制符
優化點:合理使用記憶體
情況描述:php有記憶體**機制保底,但也請小心使用記憶體
好的建議:利用unset()及時釋放不使用的記憶體
優化點:盡量少的使用正規表示式
情況描述:正規表示式的回溯開銷較大,」沒有金剛鑽別攬瓷器活「
好的建議:利用字串處理函式,實現相同邏輯
優化點:避免在迴圈內做運算
情況描述:迴圈內的計算式將被重複計算
優化點:減少計算密集型業務
情況描述:php不適合密集型運算的場景(大批量資料分析,大批量日誌分析)
為什麼?
php的語言特性決定了php不適合做大資料量運算。
php適合場景:適合銜接webserver與後端服務,ui呈現
優化點:務必使用帶引號字串做鍵值
情況描述:php會將沒有引號的鍵值當做常量,產生查詢常量的開銷
好的建議:嚴格使用引號作為鍵值,而且最好單引號
周邊:linux執行環境
檔案儲存
資料庫快取
網路常見php場景的開銷次序
讀寫記憶體《讀寫資料庫《讀寫磁碟《讀寫網路資料
優化網路請求
網路請求的坑
1.對方介面的不確定因素
2.網路穩定性
如何優化網路請求?
1.設定超時時間
a.連線超時200ms
b.讀超時 800ms
c.寫超時500ms
2.將序列請求並行化
a.使用curl_multi_*()
b.使用swoole擴充套件
壓縮php介面輸出
如何壓縮?
使用gzip即可
壓縮輸出的利與弊?
利:利於我們的資料輸出,client端能更快獲取資料 30k以下
弊:額外的cpu開銷 100k以上
快取重複計算內容
什麼情況下做輸出內容的快取?
多次請求,內容不變
重複重疊方案:併發代替序列,前後兩個業務沒有強依賴才能使用
php效能瓶頸究極方法
opcode cache:php擴充套件apc(pecl.php.net擴充套件**)
擴充套件實現:通過php擴充套件代替原php**中高頻邏輯(c底層所以速度快)
runtime優化:hhvm
php效能問題的具體分析
工具:xhporf(源自facebook的php效能分析工具)、xdebug
實踐:通過分析wordpress程式,做優化!
總結:這個工具確實很有用,優化的時候可視性很強
vld opcode**分析
壓力測試工具(ab)
./ab -n1000 -c100
總結:jmeter是ab的視覺化工具,更方便
優化php效能
優化php效能的五個實用技巧 以下是五個優化技巧,熟練掌握後對於開發還是很有幫助的。1.對字串使用單引號 php 引擎允許使用單引號和雙引號來封裝字串變數,但是這個是有很大的差別的!使用雙引號的字串告訴 php 引擎首先去讀取字串內容,查詢其中的變數,並改為變數對應的值。一般來說字串是沒有變數的,所...
php 效能優化
1 使用 優化工具 zend optimizer,原理是通過檢測zend引擎產生的中間 並且優化他 來提高速度 安裝 zend optimizer,在php.ini裡新增 zend optimizer.optimization level 15 zend extension path to zend...
PHP效能優化
php效能優化 程式優化 1 最好是使用字串連線與單引號,而不是雙引號字串。2 不要隨便複製變數。3 盡量使用echo輸出字串。4 盡量不要使用連線符,輸出多個變數時可以用逗號分開。5 盡量使用switch代替if else。6 不做無畏的替換,先用strpos查詢再做替換,不要做替換效率高200 ...