溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

php性能優(yōu)化

發(fā)布時(shí)間:2020-07-11 22:44:18 來(lái)源:網(wǎng)絡(luò) 閱讀:411 作者:m203050329 欄目:web開發(fā)

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性能分析工具


向AI問(wèn)一下細(xì)節(jié)

免責(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)容。

AI