萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> php編程 >> PHP前端開發中的性能那點事

PHP前端開發中的性能那點事

 在我們平時的php開發中,一個大的項目經過長時間的積累以後你會發現性能越來越慢,而性能到底消耗在了什麼地方,常常是一個令人頭疼的問題,function a()調用了多少次,function b()又消耗了多少時間,我們到底怎麼查找是哪個蛀蟲拉慢了我們的程序運行速度呢?在這裡給大家介紹一款工具xdebug,相信很多人已經聽說過了,希望借助這個工具我們可以起到簡單分析php程序性能瓶頸的問題。

A)假設1,假設用戶目錄在/home/ad
B)假設2,假設php目錄在/home/ad/php

1、xdebug簡介與安裝
Xdebug是一個開放源代碼的PHP程序調試器(即一個Debug工具),可以用來跟蹤,調試和分析PHP程序的運行狀況。
1)下載xdebug
xdebug的官方下載地址為:http://xdebug.org/download.php
最新版本為:Xdebug 2.1.0
2)xdebug的安裝

1 2 3 4 5 6 7 8 cd /home/ad wget  http://xdebug.org/files/xdebug-2.1.0.tgz tar -zxvf xdebug-2.1.0.tgz cd xdebug-2.1.0 /home/ad/php/bin/phpize ./configure --enable-xdebug --with-php-config=/home/ad/php/bin/php-config make make install

安裝完以後會提示你擴展安裝到了哪個目錄,類似  /home/ad/php/lib/php/extensions/no-debug-non-zts-20060613/
假設你的php.ini放在 /home/ad/php/lib/php.ini
加上

1 2 3 4 5 6 7 8 9 [xdebug] zend_extension = "/home/ad/php/lib/php/extensions/no-debug-non-zts-20060613/xdebug.so" xdebug.auto_trace = on xdebug.auto_profile = on xdebug.collect_params = on xdebug.collect_return = on xdebug.profiler_enable = on xdebug.trace_output_dir = "/home/ad/xdebug_log" xdebug.profiler_output_dir = "/home/ad/xdebug_log"

重啟apache
去/home/ad/xdebug_log下看看是不是日志已經出來了

2、xdebug參數簡介
zend_extension 加載xdebug擴展
xdebug.auto_trace 自動打開打開函數調用監測
xdebug.auto_profile 自動打開性能監測
xdebug.trace_output_dir 設定函數調用監測信息的輸出文件的路徑。
xdebug.profiler_output_dir 設定效能監測信息輸出文件的路徑。
xdebug.collect_params 打開收集“函數參數”的功能。將函數調用的參數值列入函數過程調用的監測信息中。
xdebug.collect_return 打開收集“函數返回值”的功能。將函數的返回值列入函數過程調用的監測信息中。

3、示例程序與日志收集

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 <?php function a() {     echo "aaa";    } function b() {     a();     sleep(1);     a();     sleep(1);     a();    } b(); ?>

 

 

4、日志分析工具wincachegrind
http://sourceforge.net/projects/wincachegrind/
不用安裝直接雙擊就可以打開了
我們用它打開剛才收集的日志cachegrind.out.***

 

前端開發中的性能那點事(二)巧用curl 並發減少後端訪問時間

前言:
在我們平時的程序中難免出現同時訪問幾個接口的情況,平時我們用curl進行訪問的時候,一般都是單個、順序訪問,假如有3個接口,每個接口耗時500毫秒那麼我們三個接口就要花費1500毫秒了,這個問題太頭疼了嚴重影響了頁面訪問速度,有沒有可能並發訪問來提高速度呢?今天就簡單的說一下,利用curl並發來提高頁面訪問速度,
希望大家多指導。
1、老的curl訪問方式以及耗時統計

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 <?php function curl_fetch($url, $timeout=3){     $ch = curl_init();     curl_setopt($ch, CURLOPT_URL, $url);     curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);     $data = curl_exec($ch);     $errno = curl_errno($ch);     if ($errno>0) {         $data = false;     }     curl_close($ch);     return $data; } function microtime_float() {    list($usec, $sec) = explode(" ", microtime());    return ((float)$usec + (float)$sec); } $url_arr=array(      "taobao"=>"http://www.taobao.com",      "sohu"=>"http://www.sohu.com",      "sina"=>"http://www.sina.com.cn",      );  $time_start = microtime_float();  $data=array();  foreach ($url_arr as $key=>$val)  {      $data[$key]=curl_fetch($val);  }  $time_end = microtime_float();  $time = $time_end - $time_start;  echo "耗時:{$time}"; ?>

耗時:0.614秒
2、curl並發訪問方式以及耗時統計

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
copyright © 萬盛學電腦網 all rights reserved