您好,登錄后才能下訂單哦!
1, 多用php提供的內置函數
php解釋成 opcode來執行,內置函數使代碼更少
2,不同的內置函數的機制不一樣,性能也不一樣, 比如 isset array_has_key
如何來測試,php腳本執行的時間呢?用 time 命令, time php 11.php
3,php的執行過程
*.php ->通過zend引擎scanner后,保存為zend引擎可以識別的語法exprs
然后解析(parser)成opcodes, 然后執行,最后輸出
掃描 轉碼 解析 執行
直接用內置函數,在掃描的階段,就省了很多, 在zend引擎識別語法,,的時候,內置的也是比自己寫的快, 最后生成的
opcodes 也是比自己實現的opcodes要少。
4,少用魔術方法,能不用就不用
5,php -dvld.active=1 -dvld.execute=0 11.php
安裝完php的 dvld擴展后,可以用這個命令,來查看,php解釋后生成的opcode代碼。
例如 @ 忽略錯誤,這個是在代碼執行前,生成把錯誤提示忽略,代碼執行后,把錯誤提示再打開,增加了多余的開銷,所以盡
量少用。
6,合理使用內存,建議大的數組用unset()及時釋放不適用的內存(注:unset()出現注銷不掉的情況)。
7,減少計算密集型業務
8,數組的key必須用引號括起來,否則或先去查找defind的變量
9,常見php場景的開銷次序
讀寫內存 讀寫數據庫 讀寫磁盤 讀寫網絡數據
盡量避免從磁盤寫入 讀寫一個文件,或者網絡不穩定的數據。 盡量多的用讀寫數據庫 讀寫內存
10,減少php發起的網絡請求
(1),對方接口的不確定因素
(2),網絡穩定性
優化方法:
(1),設置超時事件
a),鏈接超時,不超過200毫秒
b),讀超時,800毫秒
c),寫超時,500ms
(2),將串行請求并行化
a),使用curl_multi_*(),雖然并行了,但是多個并行請求的中間有一個慢了,那就需要等帶最慢的請求完
成
b),使用swoole擴展(開源的并行網絡請求框架)
11,壓縮php輸出的利與弊
用Gzip即可
利:利用我們的數據輸出,client端能更快的獲取數據
弊:額外的服務端cpu , client的cpu的開銷
12,php緩存復用
多次請求,內容不變的情況
13,smarty 調優和重疊時間窗口思想
開啟smarty開啟caching
14,串行方案最慢, 重疊時間窗口思想 旁路方案
類似,初中課文中說的,統籌方法。
15,XHPorf 工具,facebook的php性能分析工具
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。