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