什么情況下,會(huì)遇到PHP性能問題?
1:PHP語(yǔ)法使用不恰當(dāng)。
2:使用PHP語(yǔ)言做了它不擅長(zhǎng)的事情。
3:使用PHP語(yǔ)言連接的服務(wù)不給力。
4:PHP自身的短板(PHP自身做不了的事情)。
5:我們也不知道的問題?(去探索、分析找到解決辦法,提升開發(fā)境界)。
對(duì)線上站點(diǎn)做壓力測(cè)試的時(shí)候,我們一定要將請(qǐng)求數(shù)和并發(fā)數(shù),特別是并發(fā)數(shù)要設(shè)置的比較低,我們不能對(duì)線上的網(wǎng)站造成壓力問題,不管是自己的還是別人的。
PHP性能問題一般不會(huì)超過占整個(gè)項(xiàng)目性能的50%,一般在30%~40%。
PHP性能問題的解決方向,三個(gè)層級(jí)。
1:PHP語(yǔ)言級(jí)的性能優(yōu)化,指的是PHP語(yǔ)法基本功能,這部分優(yōu)化比較簡(jiǎn)單易見、快速可行,比較快速看到效果。
a:少寫PHP的代碼,多用PHP自身能力解決問題。
性能問題:
自寫代碼冗余較多,可讀性不佳,并且性能低,如代碼很長(zhǎng)很長(zhǎng)...PHP代碼越長(zhǎng)PHP的執(zhí)行效率越慢。為什么性能低?
PHP代碼需要解析編譯為C語(yǔ)言,底層C語(yǔ)言又要編譯成匯編語(yǔ)言機(jī)器語(yǔ)言才能執(zhí)行,這個(gè)過程在每次請(qǐng)求過來之后都要處理一遍,所以開銷很大(項(xiàng)目變大的話...)。
解決方法:
多使用PHP內(nèi)置的變量、常量、函數(shù)。我們用PHP代碼實(shí)現(xiàn)的功能和使用PHP內(nèi)置的函數(shù)實(shí)現(xiàn)的同樣功能差別是有的。 b:PHP內(nèi)置函數(shù)的性能優(yōu)劣。
情況描述
PHP內(nèi)置函數(shù)之間依然存在快慢差別;少用PHP魔術(shù)方法;
建議:
多去了解PHP內(nèi)置函數(shù)的執(zhí)行實(shí)現(xiàn)復(fù)雜度。
測(cè)試方法:比較效率測(cè)試,如用microtime函數(shù),取差值,精確到毫秒級(jí)別;Linux的time命令可以查看開銷。
c:產(chǎn)生額外開銷的錯(cuò)誤抑制符號(hào)“@”,最好別用(不管是性能優(yōu)化和項(xiàng)目的健壯性等方面)。
@的邏輯是在代碼前和代碼結(jié)束后增加了Opcode,Opcode的作用就是忽略報(bào)錯(cuò),其實(shí)就是相當(dāng)于增加了error_reporting設(shè)置,等級(jí)報(bào)錯(cuò)為忽略(vld擴(kuò)展可以查看被隱藏的Opcode);
d:合理使用內(nèi)存。
情況描述:
建議:
利用unset及時(shí)釋放不使用的內(nèi)存,比如一些數(shù)據(jù)庫(kù)多余字段(注意:unset有時(shí)會(huì)出現(xiàn)注銷不掉的情況)
e:盡量少用正則表達(dá)式。
情況描述:
正則表達(dá)式的開銷大,使用起來簡(jiǎn)單,但是性能低因?yàn)椋齽t表達(dá)式需要回溯;正則表達(dá)式越長(zhǎng),回溯的開銷越大,優(yōu)化正則表達(dá)式是需要技術(shù)水平的,正則技術(shù)不達(dá)標(biāo),不要亂用正則。
f:避免在循環(huán)內(nèi)做運(yùn)算。
情況描述:
循環(huán)內(nèi)的計(jì)算式將被重復(fù)計(jì)算(我們?cè)趂or循環(huán)或者while循環(huán),會(huì)有重復(fù)計(jì)算,影響性能問題)。
舉例:
錯(cuò)誤用法:
$str = "hello world";
for($i = 0; $i < strlen($str); $i ++){ ...}
如果你已經(jīng)決定要學(xué)好PHP,找一家靠譜的培訓(xùn)機(jī)構(gòu),將會(huì)讓你的學(xué)習(xí)過程事半功倍。
千鋒教育一直秉承“用良心做教育”的理念,致力于打造IT教育全產(chǎn)業(yè)鏈人才服務(wù)平臺(tái),培養(yǎng)優(yōu)質(zhì)人才20000余人,同期在校學(xué)員5000余人,合作院校超500所,合作企業(yè)超10000家。全國(guó)共有十三個(gè)校區(qū)。
千鋒教育PHP培訓(xùn)班畢業(yè)學(xué)員,其平均年薪相比行業(yè)平均年薪,足足高出五萬(wàn)。
千鋒教育采取企業(yè)開放場(chǎng)景教學(xué);講師、班主任、項(xiàng)目經(jīng)理立體管理;名師100%全程面授;打造高級(jí)PHP程序員,讓你真正的學(xué)有所用。市場(chǎng)的價(jià)格就是你的價(jià)值。千鋒教育,為你迅速增值。
學(xué)習(xí)6天——掌握京東、淘寶首頁(yè)開發(fā)——市場(chǎng)對(duì)應(yīng)薪資3000+;
學(xué)習(xí)30天——熟練掌握主流電商貼吧技術(shù)開發(fā)——市場(chǎng)對(duì)應(yīng)薪資5000+;
學(xué)習(xí)45天——使用框架在阿里云、騰訊云部署博客上線真實(shí)項(xiàng)目——市場(chǎng)對(duì)應(yīng)薪資6000+;
學(xué)習(xí)第七十天——寫框架、用框架、開發(fā)微信,獨(dú)立完成任意框架開發(fā)——市場(chǎng)對(duì)應(yīng)薪資8000+;
學(xué)習(xí)90天——熟練完成B站、優(yōu)酷及直播平臺(tái)彈幕實(shí)現(xiàn)、能夠部署99臺(tái)以上的服務(wù)器搞秒殺——市場(chǎng)對(duì)應(yīng)薪資10000+。
學(xué)習(xí)PHP培訓(xùn),首選千鋒教育。千鋒教育力造IT培訓(xùn)領(lǐng)導(dǎo)品牌,學(xué)員百分之九十以上都是大專以上學(xué)生,力求為你營(yíng)造最優(yōu)質(zhì)的學(xué)習(xí)環(huán)境。千鋒教育現(xiàn)在更有0學(xué)費(fèi)入學(xué)、 2周免費(fèi)試聽、跨學(xué)科周末班限時(shí)免費(fèi)送活動(dòng), 一次報(bào)名,學(xué)習(xí)雙技能,如同打了五折。歡迎你前來咨詢,試聽。