php專案優化主要三個方面
一、php語言級效能優化
二、php周邊問題的效能優化
三、php底層
php語言級效能優化
1)少寫**,多用php自身能力。
盡量使用php原生函式和常量,類
如果要實現的功能有原生php函式,則不要自己用php實現
2)盡量使用效能更高的內建函式
比如isset和array_key_exists都可以使用,則使用isset
3)產生額外開銷的錯誤抑制符@
4)合理使用記憶體(php有記憶體**機制保底,但也請小心使用記憶體,建議:利用unset() 及時釋放不使用的記憶體)
5)盡量少的使用正規表示式(建議,利用字串處理函式,實現相同邏輯)
6)迴圈內的計算式將會被重複計算。經常犯的錯誤是把乙個sql 操作放置到乙個迴圈中,這就導致頻繁的訪問資料庫,更重要的是,這會直接導致指令碼的效能低下。以下的例子,你能夠把乙個迴圈操作重置為乙個單一的sql語句。 例:
<?php
//建議
$str = 'hello world';
$strlen = strlen($str);
for($i = 0 ; $i<$strlen;$i++)
?>
?>
foreach ($userlist as $user)
過程:1insert into users (first_name,last_name) values("john", "doe")
替換成:
7)沒有原因不要copy變數。有時初級phper,為了使**更加「乾淨」,常常把已經定義的變數重新賦值給另乙個變數。這實際上就導致了雙重記憶體的消耗(當改變變數的時候),這就導致指令碼的效能下降。比如乙個使用者把乙個512kb的變數在額外插入給另乙個變數,那麼就會導致1mb的記憶體被消耗掉。$userdata = array();
foreach ($userlist as $user)
$query = 'insert into users (first_name,last_name) values' . implode(',', $userdata);
mysql_query($query);
過程:1insert into users (first_name,last_name) values("john", "doe"),("jane", "doe")...
替換為:$description = strip_tags($_post['description']);
echo $description;
echo strip_tags($_post['description']);
php周邊問題效能優化
周邊:
1)linux 執行環境
檔案儲存(硬碟,ssd)
資料庫(
mysql 索引使用,nosql+mysql的配合使用,mysql主從等
)快取(memcache redis)
2)減少檔案類操作
常見php場景的開銷次序:
讀寫磁碟、讀寫資料庫、讀寫記憶體、讀寫網路資料
讀寫記憶體<< 讀寫資料庫《讀寫磁碟《讀寫網路資料(基於檔案系統)
3)優化網路請求
例: 對方介面的不確定因素,網路穩定性
設定超時時間
a)連線超時 (不能超過 200ms) b)讀超時(800ms) c)寫超時(500ms)
2) 將序列請求並行化
a)使用curl_multi_*() b)使用swoole擴充套件
4)壓縮php介面輸出
5)php快取重複計算內容
6)smarty 調優和重疊時間視窗思想 7)
使用xhprof分析專案原始碼,找出瓶頸進行優化
工具:xhporf(源自fackbook的php效能分析工具)
ab - 壓力測試
vld - opcode **分析
php底層
1)使用opcode擴充套件 快取php的opcode**,減少php的編譯過程 2)
cpu密集或者複雜功能使用php的pecl擴充套件(swoole等優秀擴充套件的使用)3)
優化php效能
優化php效能的五個實用技巧 以下是五個優化技巧,熟練掌握後對於開發還是很有幫助的。1.對字串使用單引號 php 引擎允許使用單引號和雙引號來封裝字串變數,但是這個是有很大的差別的!使用雙引號的字串告訴 php 引擎首先去讀取字串內容,查詢其中的變數,並改為變數對應的值。一般來說字串是沒有變數的,所...
php 效能優化
1 使用 優化工具 zend optimizer,原理是通過檢測zend引擎產生的中間 並且優化他 來提高速度 安裝 zend optimizer,在php.ini裡新增 zend optimizer.optimization level 15 zend extension path to zend...
PHP效能優化
php效能優化 程式優化 1 最好是使用字串連線與單引號,而不是雙引號字串。2 不要隨便複製變數。3 盡量使用echo輸出字串。4 盡量不要使用連線符,輸出多個變數時可以用逗號分開。5 盡量使用switch代替if else。6 不做無畏的替換,先用strpos查詢再做替換,不要做替換效率高200 ...