溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

PHP中的層次性能分析器的介紹、安裝與使用

發(fā)布時(shí)間:2021-09-13 18:17:10 來(lái)源:億速云 閱讀:127 作者:chen 欄目:大數(shù)據(jù)

這篇文章主要介紹“PHP中的層次性能分析器的介紹、安裝與使用”,在日常操作中,相信很多人在PHP中的層次性能分析器的介紹、安裝與使用問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”P(pán)HP中的層次性能分析器的介紹、安裝與使用”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!

簡(jiǎn)單學(xué)習(xí)PHP中的層次性能分析器

在 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

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)容為:

  • ct:調(diào)用次數(shù)
  • wt:等待運(yùn)行時(shí)長(zhǎng),毫秒
  • cpu:cpu 運(yùn)行時(shí)長(zhǎng),毫秒
  • mu:內(nèi)存使用,字節(jié)
  • pmu:內(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ì)的信息。

 

web 查看結(jié)果報(bào)告

首先,我們需要做一些準(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)的信息了。

PHP中的層次性能分析器的介紹、安裝與使用

到此,關(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í)用的文章!

向AI問(wèn)一下細(xì)節(jié)

免責(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)容。

php
AI