php高效能介面怎麼設計
php介面設計要考慮效能,這樣才能有效面對高並行的情況,下面來說說PHP介面優化提高效能的幾條技巧。
一、伺服器
從設定上做提升,對於系統整體的執行效率是相當明顯的,這一點沒有什麼好質疑的,只要有實力,自然就可以多在這方面做提升了。
二、資料查詢
這個查詢的優化,涉及sql的優化,或者到資料庫的優化,下面有幾個簡單的優化方案。
1. sql的優化,適當使用連結串列查詢,使用連線(JOIN)來代替子查詢,一般大表和多表的情況避免使用JOIN,這種情況下使用JOIN反而達不到簡化查詢的效果。
2. sql的優化,查詢表資料時精確欄位名進行查詢,避免不必要的欄位查詢。
3. sql的優化,適當使用主外來鍵和索引,索引欄位的查詢效率在大表查詢的效率對比相當明細。但是針對對索引得使用,稍作備註。索引在很多情況下是會失效得,比如,索引列得欄位內容若整體占比過大,那這個索引也就沒什麼作用了;not in ,not exist 中也是無效得;對索引列進行運算.需要建立函數索引等
4. sql的優化,適當使用in查詢,盡量少用,最好用union代替,效率會明顯高 。 用in時,盡量使用索引欄位。sql的優化,適當使用模糊查詢。最好不用,替換成全等,因為模糊中無法用索引
5. 資料庫的優化,欄位使用合理的欄位型別,另外一個提高效率的方法是在可能的情況下,應該盡量把欄位設定為NOTNULL,避免空間浪費。
6. 資料庫的優化,合理設計表結構。比如,有時多些必要得冗餘得欄位,要好過連表查詢。
7. 資料庫的優化,合理設計索引,在聯表查詢或條件篩選中,資料表增加索引後查詢的效率會快特別多。
三、程式碼優化
程式碼上的優化也是因人而異的,每個人可能編碼習慣和風格不同,對於提高程式碼效能有各自的見解,以下是我的部分看法。
1. foreach合理使用,盡量少在迴圈中套用迴圈,在迴圈次數過多的情況下,非常耗效能。
2. 迴圈中,盡量避免資料操作,特別是查詢操作,在迴圈次數過多的情況下,多次呼叫效率很低,可一次獲取資料再拼接。
3. 同理,在迴圈中,避免設定的多次獲取,和time()函數方法的呼叫,這種一次宣告就可以重複使用。
4. 在php中,單引號和雙引號是有區別的,作為一種習慣字串我都用單引號,因為它無需編譯,對於效率,可能談不上差異大小,可能就一點點
5. 合理利用在php中的函數,像陣列函數就非常豐富,要充分利用,一般不要自己去做他本身就支援的函數方法
6. 可以用上字典的概念,將陣列以新索引形式儲存起來,我在資料的重組中很常用
7. 根據場景,合理使用快取可以減少重複的資料查詢,提高效率
8. 合理拆分功能,比如一個列表查詢,並帶有詳情檢視,可以將此處拆成兩個介面實現,在需要時獲取資料,減少資源浪費。
四、業務邏輯優化
跟響應無關的程式(如記錄紀錄檔等)耗時過多,使用fastcgi_finish_request()函數沖刷(flush)所有響應的資料給用戶端並結束請求, 這使得用戶端結束連線後,需要大量時間執行的任務能夠繼續執行,且不影響響應用戶端的時間。
echo '例子:'; file_put_contents('log.txt', date('Y-m-d H:i:s') . " 上傳視訊n", FILE_APPEND); fastcgi_finish_request(); sleep(1); file_put_contents('log.txt', date('Y-m-d H:i:s') . " 轉換格式n", FILE_APPEND); sleep(1); file_put_contents('log.txt', date('Y-m-d H:i:s') . " 提取圖片n", FILE_APPEND);
以上就是php高效能介面怎麼設計的詳細內容,更多請關注TW511.COM其它相關文章!