有考網(wǎng)有考網(wǎng)合作機(jī)構(gòu)>臨沂培訓(xùn)學(xué)校>臨沂達(dá)內(nèi)IT教育培訓(xùn)
臨沂達(dá)內(nèi)IT教育培訓(xùn)
全國(guó)統(tǒng)一學(xué)習(xí)專線 8:30-21:00
位置:有考網(wǎng) > 計(jì)算機(jī)類 > php開(kāi)發(fā) > > php高性能接口如何設(shè)計(jì)?  正文

php高性能接口如何設(shè)計(jì)?

發(fā)布時(shí)間:2021-09-22 16:48:37來(lái)源:轉(zhuǎn)載

php高性能接口怎么設(shè)計(jì)?php接口設(shè)計(jì)要考慮性能,這樣才能有效面對(duì)高并發(fā)的情況,下面來(lái)說(shuō)說(shuō)PHP接口優(yōu)化提高性能的幾條技巧。

一、服務(wù)器

從配置上做提升,對(duì)于系統(tǒng)整體的執(zhí)行效率是相當(dāng)明顯的,這一點(diǎn)沒(méi)有什么好質(zhì)疑的,只要有實(shí)力,自然就可以多在這方面做提升了。

二、數(shù)據(jù)查詢

這個(gè)查詢的優(yōu)化,涉及sql的優(yōu)化,或者到數(shù)據(jù)庫(kù)的優(yōu)化,下面有幾個(gè)簡(jiǎn)單的優(yōu)化方案。

1. sql的優(yōu)化,適當(dāng)使用鏈表查詢,使用連接(JOIN)來(lái)代替子查詢,一般大表和多表的情況避免使用JOIN,這種情況下使用JOIN反而達(dá)不到簡(jiǎn)化查詢的效果。

2. sql的優(yōu)化,查詢表數(shù)據(jù)時(shí)精確字段名進(jìn)行查詢,避免不必要的字段查詢。

3. sql的優(yōu)化,適當(dāng)使用主外鍵和索引,索引字段的查詢效率在大表查詢的效率對(duì)比相當(dāng)明細(xì)。但是針對(duì)對(duì)索引得使用,稍作備注。索引在很多情況下是會(huì)失效得,比如,索引列得字段內(nèi)容若整體占比過(guò)大,那這個(gè)索引也就沒(méi)什么作用了;not in ,not exist 中也是無(wú)效得;對(duì)索引列進(jìn)行運(yùn)算.需要建立函數(shù)索引等

4. sql的優(yōu)化,適當(dāng)使用in查詢,盡量少用,較好用union代替,效率會(huì)明顯高 。 用in時(shí),盡量使用索引字段。sql的優(yōu)化,適當(dāng)使用模糊查詢。較好不用,替換成全等,因?yàn)槟:袩o(wú)法用索引

5. 數(shù)據(jù)庫(kù)的優(yōu)化,字段使用合理的字段類型,另外一個(gè)提率的方法是在可能的情況下,應(yīng)該盡量把字段設(shè)置為NOTNULL,避免空間浪費(fèi)。

6. 數(shù)據(jù)庫(kù)的優(yōu)化,合理設(shè)計(jì)表結(jié)構(gòu)。比如,有時(shí)多些必要得冗余得字段,要好過(guò)連表查詢。

7. 數(shù)據(jù)庫(kù)的優(yōu)化,合理設(shè)計(jì)索引,在聯(lián)表查詢或條件篩選中,數(shù)據(jù)表增加索引后查詢的效率會(huì)快特別多。

三、代碼優(yōu)化

代碼上的優(yōu)化也是因人而異的,每個(gè)人可能編碼習(xí)慣和風(fēng)格不同,對(duì)于提高代碼性能有各自的見(jiàn)解,以下是我的部分看法。

1. foreach合理使用,盡量少在循環(huán)中套用循環(huán),在循環(huán)次數(shù)過(guò)多的情況下,非常耗性能。

2. 循環(huán)中,盡量避免數(shù)據(jù)操作,特別是查詢操作,在循環(huán)次數(shù)過(guò)多的情況下,多次調(diào)用效率很低,可一次獲取數(shù)據(jù)再拼接。

3. 同理,在循環(huán)中,避免配置的多次獲取,和time()函數(shù)方法的調(diào)用,這種一次聲明就可以重復(fù)使用。

4. 在php中,單引號(hào)和雙引號(hào)是有區(qū)別的,作為一種習(xí)慣字符串我都用單引號(hào),因?yàn)樗鼰o(wú)需編譯,對(duì)于效率,可能談不上差異大小,可能就一點(diǎn)點(diǎn)

5. 合理利用在php中的函數(shù),像數(shù)組函數(shù)就非常豐富,要充分利用,一般不要自己去做他本身就支持的函數(shù)方法

6. 可以用上字典的概念,將數(shù)組以新索引形式存儲(chǔ)起來(lái),我在數(shù)據(jù)的重組中很常用

7. 根據(jù)場(chǎng)景,合理使用緩存可以減少重復(fù)的數(shù)據(jù)查詢,提率

8. 合理拆分功能,比如一個(gè)列表查詢,并帶有詳情查看,可以將此處拆成兩個(gè)接口實(shí)現(xiàn),在需要時(shí)獲取數(shù)據(jù),減少資源浪費(fèi)。

四、業(yè)務(wù)邏輯優(yōu)化

跟響應(yīng)無(wú)關(guān)的程序(如記錄日志等)耗時(shí)過(guò)多,使用fastcgi_finish_request()函數(shù)沖刷(flush)所有響應(yīng)的數(shù)據(jù)給客戶端并結(jié)束請(qǐng)求, 這使得客戶端結(jié)束連接后,需要大量時(shí)間運(yùn)行的任務(wù)能夠繼續(xù)運(yùn)行,且不影響響應(yīng)客戶端的時(shí)間。

相關(guān)內(nèi)容: php教程 php開(kāi)發(fā) php高性能接口

同類文章
相關(guān)熱詞