PHP效能全面優化分享

2021-06-25 08:41:17 字數 2826 閱讀 1558

一、規範說明

效能是**執行是否良好的關鍵因素, **的效能與效率影響著公司的運營成本及長遠發展,編寫出高質高效的**是我們每個開發人員必備的素質,也是我們良好的職業素養。

二、影響效能的因素 a

、 商業需求 1.

需求合理性 2.

需求與系統的整合 3.

需求所帶來的商業利益是否與需求開發的成本成正比 4.

需求所帶來的風險 b

、 web 伺服器 1.

併發處理能力 2.

高負載的能力 3.

負載均衡的能力 4.

動態內容與靜態內容的處理能力 5.

web

伺服器部署 c

、  database 伺服器 1.

併發訪問 2.

資料庫伺服器的部署 3.

資料庫的 shema 架構與的表設計是否合理 4.

資料檢索 d

、 作業系統 e

、 客戶端請求

f、 程式/語言

三、分析效能的指標 1.

程式的執行時間   2 2.

程式的執行所消耗的記憶體 3.

單位時間內的並行處理 4.

磁碟 io 的處理

四、優化效能的目標

快速、併發、資源消耗低(記憶體、磁碟 io、cpu 負載)

五、優化效能的原則 1.

伺服器配配置最優化 2.

伺服器部署合理化 3.

商業需求合理並與產出的商業價值成正比 4.

架構可用、可維護、可擴充套件 5.

程式的正確性、簡單性、邏輯的合理性。 6.

不斷的分析效能的的瓶頸 7.

不斷的重構已有的** 8.

優化的優先順序:program->database->web sersver->os->client

六、優化 a

、 程式優化 ·

變數 1、 變數大小,注意變數大小是節約記憶體的最有效手段,對於來自使用者表單、資料庫和檔案快取的資料都需要控制變數的大小。 因為cpu要處理的資料是**於記憶體 2

、 變數有效期,使用unset()函式登出不需要的變數是一種良好的習慣,將一些不需要的變數立即登出可提高記憶體的使用率。 3

、 複製變數,盡量不要複製變數,否則就會帶來1倍的記憶體消耗,即使複製變數也應該要立即登出原有變數。 4

、 變數型別,初始化變數請注意其變數型別,乙個變數在執行過程中最好只有一種型別狀態。對於陣列變數,請初始化宣告,如下: $a = array(); 5

、 臨時變數,是處理業務邏輯的臨時儲存,這些都是需要消耗記憶體的。如果臨時變數使用結束請立即登出,特別是在一些過程式**的執行流程中,對於一些函式,如果業務非常複雜,同樣需要立即登出臨時變數 6

、 靜態變數,對於一些需要由複雜業務產生的變數,如果在程式的執行過程中多次產生並使用,可考慮使用靜態變數,減少程式的cpu執行次數 7

、 變數的效能:區域性變數》全域性變數》類屬性》未定義的變數。 ·

迴圈 1、 儘量減少迴圈的次數。

2、 儘量減少迴圈的潛逃的層次,不要超過三層。

3、 避免在迴圈內有過多的業務邏輯。

4、 不要迴圈包含檔案

5、 不要迴圈執行資料庫操作。

6、 優先使用foreach,它比for/while效率高

7、 不要把 count/strlen/sizeof 放到 for 迴圈的條件語句中 for($i=0,$count=count($array);$i<$count;$i++){} 不要使用for($i=0;$i 8

、 for($i=$total;$i>0;$i–){}效能好於for($i=0;$i<$total;$–){}

9、 保持迴圈體內的業務邏輯清晰 ·

函式 1、 函式職責清晰,乙個函式只幹一件事,不要雜揉過多的業務邏輯

2、 函式**體不要超過20行,反之,考慮拆分。

3、 優先使用php內建函式

4、 常量與函式同時能幹一件事,優先使用常量。 ·

phpversion() < php_version ·

get_class() < __class__ ·

is_null() < null === 5

、 echo 的效能好於print,輸入多個變數的時候用echo $str,$str1,不用.連線符

6、 $_server[request_time]替換time();

7、 字串替換strtr()->str_replace()->preg_replace()->epreg();

8、 發揮trim最大功效,替換substr。$filepath=trim($filename,』/』).』/』;

9、isset/empty 雖然兩個函式功能有所差異,但在同樣的情況下推薦使用 empty()

10、isfile/file_exist 兩個函式的功能有所不同,file_exist既可判斷檔案是否存在,也可以判斷目錄是否存在,在同樣的情況下推薦使用is_file ·

檔案 1、 減少檔案包含數,減少磁碟 io

2、 使用完整路徑,或者容易轉換的相對路徑。避免在 include_path 查詢

3、 檔案的**行數不要超過 2000 行

4、require_once/include_once 效率低於 require/include, 需要額外的去檢視系統是否已經呼叫過這個檔案. 因為它們在乙個 opcode 快取下的呼叫非常慢 5

、程式執行檔案用 requie/require_once,快取檔案用include/include_once。include 效率好於 require

6、優化 spl 中的檔案自動載入機制,可參靠 yii 7

、類庫檔案載入,是否考慮類是否已經例項化,可考慮採用設計模式之單例模式

8、檔案讀寫的併發性

phpmysql

PHP效能全面優化分享

在上篇博文中分享了php的開發規範,這次給大家分享下在php開發中應該注意的一些關於影響最終 效能相關的開發規範。希望大家多多支援,相互交流完善。一 規範說明 效能是 執行是否良好的關鍵因素,的效能與效率影響著公司的運營成本及長遠發展,編寫出高質高效的 是我們每個開發人員必備的素質,也是我們良好的職...

塔防類遊戲效能優化分享

最近因為新冠肺炎的關係,公司做了很多預期相關的內容。其實乙個就是塔防遊戲,大概就是在固定的路線上建立炮台以抵擋病毒,防止乙個個病毒進入體內的。那做就好了,為什麼還要有優化這麼一說呢?要求只是在一些高階的pc機上執行正常即可,而且時間要求非常緊。乙個人完成,包括策劃 美術 程式 數值等工作,只有兩天。...

Facebook優化分享後記

pagecache優化場景 使用者行為在多個熱點頁面中反覆切換。優化方式 基於quickling的流程,在客戶端做資料快取。優點 熱點頁面渲染快,服務端壓力下降。缺點 資料即時性問題。當前可以模擬單客戶自己的操作行為,保證顯示及時性,但是如果服務端狀態變更,訊息無法通知,頁面資料較老 思考 其實就是...