PHP開發(fā)規(guī)范中性能優(yōu)化的方法是什么-創(chuàng)新互聯(lián)

這篇文章主要介紹“PHP開發(fā)規(guī)范中性能優(yōu)化的方法是什么”,在日常操作中,相信很多人在PHP開發(fā)規(guī)范中性能優(yōu)化的方法是什么問題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”PHP開發(fā)規(guī)范中性能優(yōu)化的方法是什么”的疑惑有所幫助!接下來,請(qǐng)跟著小編一起來學(xué)習(xí)吧!

創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比杞縣網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式杞縣網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋杞縣地區(qū)。費(fèi)用合理售后完善,十余年實(shí)體公司更值得信賴。

一、規(guī)范說明

性能是網(wǎng)站運(yùn)行是否良好的關(guān)鍵因素,網(wǎng)站的性能與效率影響著公司的運(yùn)營(yíng)成本及長(zhǎng)遠(yuǎn)發(fā)展,編寫出高質(zhì)高效的代碼是我們每個(gè)開發(fā)人員必備的素質(zhì),也是我們良好的職業(yè)素養(yǎng)。

二、影響性能的因素

A、 商業(yè)需求

需求合理性
需求與系統(tǒng)的整合
需求所帶來的商業(yè)利益是否與需求開發(fā)的成本成正比
需求所帶來的風(fēng)險(xiǎn)
B、 Web 服務(wù)器

并發(fā)處理能力
高負(fù)載的能力
負(fù)載均衡的能力
動(dòng)態(tài)內(nèi)容與靜態(tài)內(nèi)容的處理能力
Web 服務(wù)器部署
C、 DataBase 服務(wù)器

并發(fā)訪問
數(shù)據(jù)庫服務(wù)器的部署
數(shù)據(jù)庫的 shema 架構(gòu)與的表設(shè)計(jì)是否合理
數(shù)據(jù)檢索
D、 操作系統(tǒng)

E、 客戶端請(qǐng)求
F、 程序/語言

三、分析性能的指標(biāo)

程序的運(yùn)行時(shí)間 2
程序的運(yùn)行所消耗的內(nèi)存
單位時(shí)間內(nèi)的并行處理
磁盤 IO 的處理
四、優(yōu)化性能的目標(biāo)
快速、并發(fā)、資源消耗低(內(nèi)存、磁盤 IO、CPU 負(fù)載)

五、優(yōu)化性能的原則

服務(wù)器配配置最優(yōu)化
服務(wù)器部署合理化
商業(yè)需求合理并與產(chǎn)出的商業(yè)價(jià)值成正比
架構(gòu)可用、可維護(hù)、可擴(kuò)展
程序的正確性、簡(jiǎn)單性、邏輯的合理性。
不斷的分析性能的的瓶頸
不斷的重構(gòu)已有的代碼
優(yōu)化的優(yōu)先級(jí):program->database->web sersver->os->client
六、優(yōu)化

A、 程序優(yōu)化

變量
1、 變量大小,注意變量大小是節(jié)約內(nèi)存的最有效手段,對(duì)于來自用戶表單、數(shù)據(jù)庫和文件緩存的數(shù)據(jù)都需要控制變量的大小。因?yàn)閏pu要處理的數(shù)據(jù)是來源于內(nèi)存

2、 變量有效期,使用unset()函數(shù)注銷不需要的變量是一種良好的習(xí)慣,將一些不需要的變量立即注銷可提高內(nèi)存的使用率。

3、 復(fù)制變量,盡量不要復(fù)制變量,否則就會(huì)帶來1倍的內(nèi)存消耗,即使復(fù)制變量也應(yīng)該要立即注銷原有變量。

4、 變量類型,初始化變量請(qǐng)注意其變量類型,一個(gè)變量在執(zhí)行過程中最好只有一種類型狀態(tài)。對(duì)于數(shù)組變量,請(qǐng)初始化聲明,如下: $a = array();

5、臨時(shí)變量,是處理業(yè)務(wù)邏輯的臨時(shí)存儲(chǔ),這些都是需要消耗內(nèi)存的。如果臨時(shí)變量使用結(jié)束請(qǐng)立即注銷,特別是在一些過程式代碼的執(zhí)行流程中,對(duì)于一些函數(shù),如果業(yè)務(wù)非常復(fù)雜,同樣需要立即注銷臨時(shí)變量

6、靜態(tài)變量,對(duì)于一些需要由復(fù)雜業(yè)務(wù)產(chǎn)生的變量,如果在程序的執(zhí)行過程中多次產(chǎn)生并使用,可考慮使用靜態(tài)變量,減少程序的cpu執(zhí)行次數(shù)

7、變量的性能:局部變量>全局變量>類屬性>未定義的變量。

循環(huán)
1、 盡量減少循環(huán)的次數(shù)。
2、 盡量減少循環(huán)的潛逃的層次,不要超過三層。
3、 避免在循環(huán)內(nèi)有過多的業(yè)務(wù)邏輯。
4、 不要循環(huán)包含文件
5、 不要循環(huán)執(zhí)行數(shù)據(jù)庫操作。
6、 優(yōu)先使用foreach,它比for/while效率高
7、 不要把 count/strlen/sizeof 放到 for 循環(huán)的條件語句中 For($i=0,$count=count($array);$i<$count;$i++){} 不要使用for($i=0;$i<count($array);$i++){};

8、 for($i=$total;$i>0;$i&ndash;){}性能好于for($i=0;$i<$total;$&ndash;){}
9、 保持循環(huán)體內(nèi)的業(yè)務(wù)邏輯清晰

函數(shù)
1、 函數(shù)職責(zé)清晰,一個(gè)函數(shù)只干一件事,不要雜揉過多的業(yè)務(wù)邏輯
2、 函數(shù)代碼體不要超過20行,反之,考慮拆分。
3、 優(yōu)先使用php內(nèi)置函數(shù)
4、 常量與函數(shù)同時(shí)能干一件事,優(yōu)先使用常量。

phpversion() < PHP_VERSION
get_class() < __CLASS__
is_null() < NULL ===
5、 echo 的性能好于print,輸入多個(gè)變量的時(shí)候用echo $str,$str1,不用.連接符
6、 $_SERVER[REQUEST_TIME]替換time();
7、字符串替換strtr()->str_replace()->preg_replace()->epreg();
8、 發(fā)揮trim大功效,替換substr。$filepath=trim($filename,&rsquo;/&rsquo;).&rsquo;/&rsquo;;
9、Isset/empty 雖然兩個(gè)函數(shù)功能有所差異,但在同樣的情況下推薦使用 empty()
10、isfile/file_exist 兩個(gè)函數(shù)的功能有所不同,file_exist既可判斷文件是否存在,也可以判斷目錄是否存在,在同樣的情況下推薦使用is_file

文件
1、 減少文件包含數(shù),減少磁盤 IO
2、 使用完整路徑,或者容易轉(zhuǎn)換的相對(duì)路徑。避免在 include_path 查找
3、 文件的代碼行數(shù)不要超過 2000 行
4、Require_once/include_once 效率低于 require/include, 需要額外的去查看系統(tǒng)是否已經(jīng)調(diào)用過這個(gè)文件. 因?yàn)樗鼈冊(cè)谝粋€(gè) opcode 緩存下的調(diào)用非常慢

5、程序執(zhí)行文件用 requie/require_once,緩存文件用include/include_once。Include 效率好于 require
6、優(yōu)化 spl 中的文件自動(dòng)加載機(jī)制,可參靠 yii

7、類庫文件加載,是否考慮類是否已經(jīng)實(shí)例化,可考慮采用設(shè)計(jì)模式之單例模式
8、文件讀寫的并發(fā)性

面向?qū)ο?br/>1、 控制實(shí)例的創(chuàng)建的數(shù)量
2、 優(yōu)先使用常量、類常量
3、 優(yōu)先例用靜態(tài)變量,靜態(tài)屬性
4、 類的結(jié)構(gòu)合理
5、 面象接口編程
6、 封裝變化點(diǎn)
7、 依賴于抽象,不依賴于細(xì)節(jié)
8、 優(yōu)先使用靜態(tài)成員
9、 類的接口清晰穩(wěn)定,類的職責(zé)單一,類與類的通信合理
10、 使用常量的好處 編譯時(shí)解析,沒有額外開銷 雜湊表更小,所以內(nèi)部查找更快 類常量?jī)H存在于特定「命名空間」,所以雜湊名更短代碼更干凈,使除錯(cuò)更方便

字符串
1、 用單引號(hào)替代雙引號(hào)引用字符串;避免檢索字符串中的變量

運(yùn)算
1、 用 i+=1 代替i=i+1。符合c/c++的習(xí)慣,效率還高
2、 ++$i 的效率高于++$i,&ndash;$i 同理

數(shù)組
1、 多維數(shù)組盡量不要循環(huán)嵌套賦值;
2、 使用$array[&lsquo;name&rsquo;]方式訪問數(shù)組,禁止$array[name]/$array[&ldquo;name&rdquo;]

判斷
1、 邏輯判斷請(qǐng)優(yōu)先使用switch 的方式,對(duì)于業(yè)務(wù)邏輯相對(duì)較多的情況請(qǐng)選擇if/else,提高代碼的可讀性
2、 盡量控制if/else判斷的個(gè)數(shù),如果太多請(qǐng)考慮功能優(yōu)化或代碼優(yōu)化
3、 盡量使用恒等用于比較判斷,恒等的效率高于等于,而且還能避免一些類型強(qiáng)制轉(zhuǎn)換的錯(cuò)誤
4、 if/else與_&&,單條語句判斷請(qǐng)選擇&&的形式, &&的效率高于if/else,如下 :
if ($a == 1) {
$b = 2;
}可選擇為($a == 1) && $b = 2;

緩存
1、 使用php加速器,緩沖opcode
2、 例用memcache/nosql
3、 使用內(nèi)存數(shù)據(jù)庫、
4、 使用文件緩存
5、 緩沖功能 5

其它
1、 少用@符號(hào),嚴(yán)重影響性能
2、 適時(shí)關(guān)閉遠(yuǎn)程資源連接如數(shù)據(jù)庫,ftp、socket等,適時(shí)的清理這些資源

B、 數(shù)據(jù)庫優(yōu)化
1、 合理的商業(yè)需情
2、 數(shù)據(jù)庫 schema 架構(gòu)優(yōu)化
3、 垂直與水平分庫分表
4、 索引優(yōu)化,查詢優(yōu)化
5、 第三方開源檢索工具(sphinx)
6、 主從數(shù)據(jù)庫服務(wù)器的使用。
C、 Web 服器優(yōu)化(暫未整理,有相應(yīng)的 Web 服務(wù)器優(yōu)化手冊(cè))

D、 操作系統(tǒng)優(yōu)化(暫未整理,有相應(yīng)的 OS 優(yōu)化手冊(cè))

E、 前端優(yōu)化
1、合理的 html 結(jié)構(gòu)
2、合理 html 與css 的同時(shí),考慮 Css 設(shè)計(jì)合理,減少 http 請(qǐng)求
3、合理 html 與javascript 的同時(shí),考慮拆分是否合理,減少 http 請(qǐng)求
4、優(yōu)化 javascript 代碼,讓用戶有良好的體驗(yàn)
5、根據(jù) http 協(xié)議,優(yōu)化高并發(fā)請(qǐng)求

七、性能檢測(cè)工具

Web Server

 ab
 http_load
PHP

 apd
 xdebug
Mysql

 explain

profiler 

到此,關(guān)于“PHP開發(fā)規(guī)范中性能優(yōu)化的方法是什么”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!

當(dāng)前標(biāo)題:PHP開發(fā)規(guī)范中性能優(yōu)化的方法是什么-創(chuàng)新互聯(lián)
本文來源:http://muchs.cn/article38/cosgsp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)網(wǎng)站維護(hù)、品牌網(wǎng)站設(shè)計(jì)網(wǎng)站導(dǎo)航、網(wǎng)站排名、網(wǎng)站收錄

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化