您好,登錄后才能下訂單哦!
這篇文章主要介紹“PHP中的層次性能分析器的介紹、安裝與使用”,在日常操作中,相信很多人在PHP中的層次性能分析器的介紹、安裝與使用問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”P(pán)HP中的層次性能分析器的介紹、安裝與使用”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!
在 PHP 中,我們需要進(jìn)行調(diào)試的時(shí)候,一般都會(huì)使用 memory_get_usage() 看下內(nèi)存的使用情況。但如果想看當(dāng)前的腳本 CPU 的占用情況就沒(méi)有什么現(xiàn)成的函數(shù)了。不過(guò),PHP 也為我們提供了一個(gè)擴(kuò)展:XHProf ,這是由 FaceBook 開(kāi)源的一個(gè)擴(kuò)展,它可以幫我們看到當(dāng)前腳本運(yùn)行時(shí)的一些性能情況。
XHProf 是一個(gè)輕量級(jí)的分層性能測(cè)量分析器。在數(shù)據(jù)收集階段,它跟蹤調(diào)用次數(shù)與測(cè)量數(shù)據(jù),展示程序動(dòng)態(tài)調(diào)用的弧線(xiàn)圖。它在報(bào)告、后期處理階段計(jì)算了獨(dú)占的性能度量,例如運(yùn)行經(jīng)過(guò)的時(shí)間、CPU 計(jì)算時(shí)間和內(nèi)存開(kāi)銷(xiāo)。函數(shù)性能報(bào)告可以由調(diào)用者和被調(diào)用者終止。在數(shù)據(jù)搜集階段 XHProf 通過(guò)調(diào)用圖的循環(huán)來(lái)檢測(cè)遞歸函數(shù),通過(guò)賦予唯一的深度名稱(chēng)來(lái)避免遞歸調(diào)用的循環(huán)。
簡(jiǎn)單來(lái)說(shuō),XHProf 就是能為我們收集很多程序運(yùn)行時(shí)的系統(tǒng)狀態(tài),并且它自帶一套在線(xiàn)圖表工具,能夠?yàn)槲覀兲峁┰敱M的圖表信息。
直接在 PECL 下載安裝擴(kuò)展包即可。和其它的擴(kuò)展安裝并沒(méi)有什么兩樣,這個(gè)擴(kuò)展一直在更新維護(hù)狀態(tài)中,所以對(duì)于 PHP7 版本都是完美支持的。
xhprof_enable(XHPROF_FLAGS_NO_BUILTINS | XHPROF_FLAGS_CPU | XHPROF_FLAGS_MEMORY);
//xhprof_enable( XHPROF_FLAGS_CPU | XHPROF_FLAGS_MEMORY);
//xhprof_enable( XHPROF_FLAGS_MEMORY);
//xhprof_enable();
for ($i = 0; $i <= 1000; $i++) {
$a = $i * $i;
}
function test_application(){
for ($i = 0; $i <= 1000; $i++) {
$a = $i * $i;
}
}
test_application();
$xhprof_data = xhprof_disable();
print_r($xhprof_data);
// Array
// (
// [main()==>test_application] => Array
// (
// [ct] => 1
// [wt] => 16
// [cpu] => 21
// [mu] => 848
// [pmu] => 0
// )
// [main()] => Array
// (
// [ct] => 1
// [wt] => 115
// [cpu] => 115
// [mu] => 1416
// [pmu] => 0
// )
// )
使用 xhprof_enable() 啟用分析器,它的參數(shù)是幾個(gè)常量,大概的意思就是顯示 CPU 信息、內(nèi)存信息等,如果沒(méi)有參數(shù)的話(huà)則只會(huì)返回 ct 、 wt 這兩個(gè)參數(shù)。
調(diào)用 xhprof_disable() 結(jié)束分析并返回分析結(jié)果,返回值的內(nèi)容包括 main 主函數(shù)的運(yùn)行情況,也就是我們當(dāng)前頁(yè)面測(cè)試代碼的情況。還有調(diào)用的函數(shù) test_application() 函數(shù)的性能情況。具體內(nèi)容為:
沒(méi)錯(cuò),就是這么簡(jiǎn)單的內(nèi)容。通過(guò)兩個(gè)函數(shù)的調(diào)用我們就能看到當(dāng)前腳本程序的運(yùn)行狀態(tài),占用了多少內(nèi)存、耗費(fèi)了多少 cpu 時(shí)長(zhǎng)。當(dāng)然,更方便的是,它還可以通過(guò) web 頁(yè)面顯示更為詳細(xì)的信息。
首先,我們需要做一些準(zhǔn)備工作。一是要安裝一個(gè) graphviz 用于圖形繪制,二是修改 php.ini 文件的結(jié)果存放目錄,三是拷貝源碼中的分析器代碼并修改一下我們之前的測(cè)試代碼。
yum install graphviz
CentOS 系統(tǒng)中我們直接使用 yum 就可以安裝 graphviz 。然后我們?cè)?php.ini 文件中為 xhprof 指定一下輸出目錄。
xhprof.output_dir=/tmp
接下來(lái),我們需要將源碼文件中的 xhporf_html 目錄和 xhporf_lib 目錄拷貝出來(lái)放到項(xiàng)目文件下。然后修改代碼來(lái)保存性能分析的結(jié)果。
// ..... 上面的代碼
$xhprof_data = xhprof_disable();
require 'xhprof_lib/utils/xhprof_lib.php';
require 'xhprof_lib/utils/xhprof_runs.php';
$xhprofRuns = new XHProfRuns_Default();
$runId = $xhprofRuns->save_run($xhprof_data, 'xhprof_test');
echo 'http://192.168.56.102/index.php?run=' . $runId . '&source=xhprof_test';
然后我們需要在 xhporf_html 搭起服務(wù)器,在這里我就用簡(jiǎn)單的 php -S 命令運(yùn)行起來(lái)。
cd xhprof_html/
php -S 0.0.0.0:80
最后用上面輸出的鏈接來(lái)訪問(wèn)這個(gè)頁(yè)面,就可以看到相關(guān)的信息了。
到此,關(guān)于“PHP中的層次性能分析器的介紹、安裝與使用”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。