安裝和使用Xhprof,安裝使用Xhprof

來源:互聯網
上載者:User

安裝和使用Xhprof,安裝使用Xhprof
安裝xhprof(如果有錯誤,要make clean,重新編譯)


1 下載xhprof
#wget (去官網下載,我沒從官網下載,放到yii裡就各種不能用,後來重新編譯了就好了,如果進行不下去的時候又找不到原因,可以重新編譯一下)
#tar zxf xx.gz(下下來的檔案)


2  cd xhprof
   cd extension
   /usr/local/php/bin/phpize(用自己環境裡的phpize路徑)
   ./configure --enable-xhprof --with-php-config=/usr/local/php/bin/php-config(你自己環境的php-config路徑,路徑錯了安裝肯定失敗)
   make && make install(如果有報錯,記得先make clean 再做重新編譯,如果還是不行,就得換個版本重新編譯了,這個地方我試了好幾遍才成功比較鬱悶)
3  建立檔案/usr/local/etc/php/php.d/xhprof.ini(或者在php.ini最後加上,都行)
   內容:extension=xhprof.so;
         xhprof.output_dir=/data/logs/Appstore/Xhprof/

4  開啟phpinfo() 查看擴充是否加上(如果沒有,重新編譯,直到成功為止)


如果不需要顯示圖,到現在就可以用了,自己建一個xhprof的網域名稱,然後到example裡的sample.php裡進行測試就行了

如果需要顯示圖,那接著往下走


安裝png(確認線上是否有libpng擴充,如果有就不需要安裝了) 
1 wget http://nchc.dl.sourceforge.net/project/libpng/libpng15/1.5.1/libpng-1.5.1.tar.gz  
2 tar zxf libpng-1.5.1.tar.gz  
3 cd libpng-1.5.1  
4 ./configure --with-php-config=/usr/local/php/bin/php-config
5 make  
6 make install 


安裝完以後開始裝Graphviz


安裝Graphviz 
1 wget http://www.graphviz.org/pub/graphviz/stable/SOURCES/graphviz-2.24.0.tar.gz  
2 tar zxf graphviz-2.24.0.tar.gz  
3 cd graphviz-2.24.0  
4./configure  --with-php-config=/usr/local/php/bin/php-config --with-png=yes
5  make  
6 make install 


完成以後如果產生/usr/bin/dot則成功

這時候你會發現圖還是顯示不出來,提示dot - png fail,是說他找不到dot的路徑,到你的xhprof/xhprof_lib/utils/callgraph_utils.php 裡的dot路徑為/usr/bin/dot(你自己產生的dot地址)

這時候圖基本上就出來了


見下面的圖,是不是很壯觀,出來的時候成就感爆棚


下面說怎麼融合到你自己的代碼裡面去


在分析時跳過內建函數 xhprof_enable(XHPROF_FLAGS_MEMORY ,array('ignored_functions' => array('call_user_func','call_user_func_array')));


使用機制:

我是自己封裝了個類,也可以直接用

在函數的開頭調用類以後會在你的xhprof.output_dir裡產生一個檔案

在/data/logs/Appstore/Xhprof/下會產生比如54a3a2606e75b.top-size-10-page-1-list.json.xhprof的檔案,


如果            $run_id = $xhprofRuns->save_run($xhprofData, $name); 這個name預設是xhprof_foo,如果你想在產生的檔案裡直接看到是哪個介面產生的解析檔案,

可以在這塊指定name,我是這樣做的

$name = str_replace('/', '-', $_SERVER['REQUEST_URI']);
            
$name = substr($name, 1);


$xhprofRuns = new XHProfRuns_Default();
            
$run_id = $xhprofRuns->save_run($xhprofData, $name);


然後根據你自己配置的網域名稱就可以看效果了,比如


訪問http://xxx/xhprof_html/index.php?run=54a3a2606e75b&source=top-size-10-page-1-list.json(這塊的source是你自己定義的name,如果沒定義,就不用改,如果不改,會看不到內容)就可以看到了


點view full callgraph就可以點擊圖片看細節了,比較清晰明了



http://xxx/xhprof_html/callgraph.php?run=54a3a2606e75b&source=top-size-10-page-1-list.json



聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.