php優化
2015年12月14日 21:20:29
之前寫過兩篇文章:
第二篇裡邊有兩個很耗時間和記憶體的線條:
第一個斜坡:
從mysql裡讀取資料後, 用while迴圈呼叫$result->fetch_assoc()將資料存放到陣列裡
這裡的缺點是迴圈呼叫該函式, 如果資料量比較大的話,會有很多的函式呼叫(上下文切換),很浪費效率
優化:
php原始碼安裝.configure時指定mysqlnd驅動,老版本php原始碼安裝時需要指定mysql安裝的相關幾個地址
確保這一項以後, 使用$result->fetch_all(MYSQLI_ASSOC) 一次性將result轉換為關聯陣列
1 //將結果集轉換成陣列返回 2 //如果field不為空,則返回的陣列以$field為鍵重新索引 3 public function rstoarray(&$result, $field = ``) 4 { 5 $arrRs = $result->fetch_all(MYSQLI_ASSOC); //該函式只能用於php的mysqlnd驅動 6 $result->free(); 7 8 if ($field) { 9 $arrResult = []; 10 foreach ($arrRs as $v) { 11 $arrResult[$v[$field]] = $v; 12 } 13 return $arrResult; 14 } 15 16 return $arrRs; 17 }
圖中有一個水平線,記憶體沒有增加,但是耗費了很多時間
那裡的程式碼是一段排序操作,用到了php的usort(); 自定義排序,
需要自己寫一個排序用的回撥函式, 這段效率特別低
優化:
[
`a` => [`sort` => 123],
`b` => [`sort` => 234]
…..
]
先遍歷要排序的二維陣列(如上邊的那個), 生成一個一維陣列, 鍵為二維陣列的鍵,值為排序用的那個值:
[
`a` => 123,
`b` => 234
]
然後用php的排序函式: asort() 或者 arsort();對這個一維陣列排序, 然後根據對應關係生成一個新的完整的陣列, 這樣會快很多
1 //按照二維陣列中的某個鍵進行排序 2 public function mysort(&$arr, $key, $desc = ``) 3 { 4 $tmp = array(); 5 foreach ($arr as $k=>$v) { 6 $tmp[$k] = $v[$key]; 7 } 8 9 if ($desc) { 10 arsort($tmp); 11 } else { 12 asort($tmp); 13 } 14 15 $result = array(); 16 foreach ($tmp as $k => $v) { 17 $result[$k] = $arr[$k]; 18 } 19 20 return $result; 21 }
相關文章
- php效能優化PHP優化
- PHP 效能優化PHP優化
- PHP 效能優化 - OPcachePHP優化opcache
- php-fpm優化PHP優化
- PHP優化雜燴PHP優化
- PHP效能優化技巧PHP優化
- PHP 效能優化 - php.ini 配置PHP優化
- PHP記憶體優化PHP記憶體優化
- PHP.ini效能優化PHP優化
- PHP 匯出 Excel 的優化PHPExcel優化
- PHP效能優化 -理論篇PHP優化
- PHP 應用效能優化指南PHP優化
- PHP 7革新與效能優化PHP優化
- PHP 程式碼優化技巧總結PHP優化
- php-fpm的配置和優化PHP優化
- PHP的效能優化方法總結PHP優化
- PHP7效能優化筆記PHP優化筆記
- 深入理解 PHP opcode 優化PHP優化
- PHP伺服器訪問優化PHP伺服器優化
- PHP程式碼優化技巧大盤點PHP優化
- PHP 7 的革新與效能優化PHP優化
- [php]如何做到高併發優化PHP優化
- Nginx+php-fpm高併發優化NginxPHP優化
- PHP程式碼優化24條真經PHP優化
- PHP程式碼優化的小技巧分享PHP優化
- PHP物件的引用及物件優化策略PHP物件優化
- 優化php程式,試試這幾招。優化PHP
- 簡單說說PHP優化那些事PHP優化
- 45 個 PHP 程式效能優化的小技巧PHP優化
- PHP程式碼優化的40條建議PHP優化
- 再次優化NGINX+php-fpm上傳薦優化NginxPHP
- 對線面試官:php-fpm優化總結面試PHP優化
- 48 條高效率的 PHP 優化寫法PHP優化
- 牛人寫的facebook優化php來龍去脈優化PHP
- PHP MySQL效能優化的最佳16條經驗PHPMySql優化
- 【乾貨分享】20條PHP程式碼優化技巧PHP優化
- PHP的curl造成效能瓶頸,如何優化?PHP優化
- php調優PHP