前端開發中的性能那點事(一)巧用xdebug

前言:
在咱們平時的php開發中,一個大的項目通過長時間的積累之後你會發現性能愈來愈慢,而性能到底消耗在了什麼地方,經常是一個使人頭疼的問題,function a()調用了多少次,function b()又消耗了多少時間,咱們到底怎麼查找是哪一個蛀蟲拉慢了咱們的程序運行速度呢?在這裏給你們介紹一款工具xdebug,相信不少人已經據說過了,但願藉助這個工具咱們能夠起到簡單分析php程序性能瓶頸的問題。
A)假設1,假設用戶目錄在/home/ad
B)假設2,假設php目錄在/home/ad/php php

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

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下看看是否是日誌已經出來了 工具

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

三、示例程序與日誌收集 spa

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

四、日誌分析工具wincachegrind
http://sourceforge.net/projects/wincachegrind/
不用安裝直接雙擊就能夠打開了
咱們用它打開剛纔收集的日誌cachegrind.out.***
第一眼就能夠看到 咱們在mian裏面調用了一次b函數,這個函數執行了2秒,以下圖

咱們雙擊打開b函數的詳細執行狀況,能夠看到b調用了a函數三次,sleep兩次,以及每一個函數花費的時間以下圖
.net

相關文章
相關標籤/搜索