當前位置:
首頁 > 最新 > XHProf的使用

XHProf的使用

簡介

XHProf是一個分層PHP性能分析工具。它報告函數級別的請求次數和各種指標,包括阻塞時間,CPU時間和內存使用情況。一個函數的開銷,可細分成調用者和被調用者的開銷,XHProf數據收集階段,它記錄調用次數的追蹤和包容性的指標弧在動態callgraph的一個程序。它獨有的數據計算的報告/後處理階段。在數據收集時,XHProfd通過檢測循環來處理遞歸的函數調用,並通過給遞歸調用中每個深度的調用一個有用的命名來避開死循環。XHProf分析報告有助於理解被執行的代碼的結構,它有一個簡單的HTML的用戶界面( PHP寫成的)。基於瀏覽器的性能分析用戶界面能更容易查看,或是與同行們分享成果。也能繪製調用關係圖。(來自百度百科)

前提

我的PHP版本是PHP7:

PHP版本

而xhprof支持PHP7的庫請在longxinH-xhprof查看。

longxinH/xhprof

備註:我之前在phacility克隆的,不過安裝失敗,原因就是我的PHP版本是PHP7,而phacility版本的並不支持。(采坑呢~~)

安裝步驟

當做一個php項目!clone別人php代碼放哪個目錄你自己定

1.編譯安裝

cd /Users/birjemin/Developer/Php

git clone https://github.com/longxinH/xhprof

cd xhprof/extension

phpize ./configure

make

make install

編譯成功之後

2.配置文件

cd /usr/local/etc/php/7.0/conf.d

vim ext-xhprof.ini

添加內容(這個就是編譯成功之後的路徑,見上圖)

[xhprof] extension="/usr/local/Cellar/php70/7.0.14_7/lib/php/extensions/no-debug-non-zts-20151012/xhprof.so"

3.重啟php-fpm(視個人重啟方式而定,我的重啟方式是這樣的)

cd /usr/local/etc/php/7.0/

sudo killall php-fpm

sudo /usr/local/Cellar/php70/7.0.14_7/sbin/php-fpm -D

4.查看是否安裝成功

php -m

phpinfo

恭喜安裝成功!

使用步驟

1.如果使用呢?兩種方法,第一種就是把xhprof_lib.php和xhprof_runs.php拷貝到項目中,第二種就是用絕對路徑引入這兩個文件,推薦第一種,這樣別人clone的你的項目,不需要做啥。

2.建立兩個開啟函數(isDev()是判斷本地環境的意思,請視情況刪除)

開啟xhprof

function enableXhprof(){

}

運行xhprof(xhprof_lib.php和xhprof_runs.php可以拷貝到項目的,請確保include_once請夠載入這兩個文件)。

function disableXhprof(){

if (isDev()) {

$xhprof_data = xhprof_disable();

include_once app_path() . "/xhprof_lib.php";

include_once app_path() . "/xhprof_runs.php";

$run_id = $xhprof_runs->save_run($xhprof_data, "xhprof_foo"); #echo $run_id;

}

}

3.可以在需要監聽的介面中代碼片段前面加上enableXhprof(),後面加上disableXhprof()就好了。接下來就可以分析這段代碼了。(請確保這兩個函數全局訪問)

4.將克隆的xprof配置虛擬主機,這個和你的項目一樣的,就把xprof也當做一個項目,配置成瀏覽器可訪問。比如我的配置:

nginx server conf

server {

listen 80;

autoindex on; location / {

root /Users/birjemin/Developer/Php/xhprof;

index index.html index.htm index.php;

try_files $uri $uri/ /index.php?$query_string;

}

location ~ .php$ {

root /Users/birjemin/Developer/Php/xhprof;

fastcgi_pass 127.0.0.1:9000;

fastcgi_index index.php;

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

fastcgi_intercept_errors on;

include fastcgi_params;

}

}

xhprof網站

6.在postman或者瀏覽器訪問介面,轉啊轉,好了之後就可以去

http://local.xhprof.com/xhprof_html/

查看了。(圖我就不截了。。下次講一下xgui的使用)

示例

遇到的問題

1.php -v的版本和phpinfo()的版本不一致,如下圖:

php -v

phpinfo

解決方法:更改php cli的默認版本

我用的是bash

vim .bash_profile

添加兩行

# PHP -vexport PATH="/usr/local/Cellar/php70/7.0.14_7/bin:$PATH"

生效

source .bash_profile

2.編譯成功,但是php -m 沒有 xhprof。

xhprof支持PHP7的庫請在longxinH-xhprof查看!!!!

備註

全程經歷了2.5h吧~~~ 不過文章也寫了2.5h。哈哈哈哈~這個東西和xdebug不一樣的,這個是分析性能瓶頸的,可以讓你優化代碼。xdebug主要用於調試,我下次寫一個xdebug安裝的過程。

參考

https://www.jianshu.com/p/38e3ae81970c

https://juejin.im/post/5860d23f128fe10069e1cfbf

https://baike.baidu.com/item/xhprof/2513363?fr=aladdin


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 偶然與突然 的精彩文章:

TAG:偶然與突然 |