PHP7下安裝并使用xhprof性能分析工具
該 xhprof 版本是從 https://github.com/longxinH/xhprof 獲取
安裝 xhprof
cd xhprof/extension/
phpize
./configure
make
然后在/etc/php.ini中根據(jù)情況加入
extension=xhprof.so
執(zhí)行
php -m | grep xhprof
可以看見(jiàn)輸出,說(shuō)明php擴(kuò)展安裝成功,然后重啟Apache或者php-fpm
運(yùn)行
可以直接運(yùn)行從github上clone下來(lái)的文件里面example目錄下的那個(gè)例子
輸出如下
Array
(
[main()] => Array
(
[ct] => 1
[wt] => 9
)
)
---------------
Assuming you have set up the http based UI for
XHProf at some address, you can view run at
http://<xhprof-ui-address>/index.php?run=592567308784c&source=xhprof_foo
然后復(fù)制index.php后面的?run=592567308784c&source=xhprof_foo
訪問(wèn)
xhprof_html/index.php?run=592567308784c&source=xhprof_foo
可看見(jiàn)輸出
點(diǎn)擊中間的 View Full Callgraph 即可看見(jiàn)性能分析圖片
報(bào)錯(cuò)
failed to execute cmd:" dot -Tpng". stderr:sh: dot:command not found。
//解決方案yum install graphviz
隨機(jī)應(yīng)變
比如想測(cè)試自己的項(xiàng)目,例如一款框架的性能分析。
復(fù)制xhprof_lib/utils/下的兩個(gè)文件
xhprof_lib.php和xhprof_runs.php到入口文件同級(jí)目錄,然后在入口文件起始位置添加
// start profiling xhprof_enable();
結(jié)束位置添加
// stop profiler $xhprof_data = xhprof_disable(); // display raw xhprof data for the profiler run print_r($xhprof_data); include_once "xhprof_lib.php"; include_once "xhprof_runs.php"; // save raw data for this profiler run using default // implementation of iXHProfRuns. $xhprof_runs = new XHProfRuns_Default(); // save the run under a namespace "xhprof_foo" $run_id = $xhprof_runs->save_run($xhprof_data, "xhprof_foo"); echo "---------------\n". "Assuming you have set up the http based UI for \n". "XHProf at some address, you can view run at \n". "http://<xhprof-ui-address>/index.php?run=$run_id&source=xhprof_foo\n". "---------------\n";
即可得到如上所示的那個(gè)url,然后再次去訪問(wèn)
http://***/xhprof_html/index.php?run=*****&source=xhprof_foo
得到如下所示頁(yè)面
查看圖片
圖中紅色的部分為性能比較低,耗時(shí)比較長(zhǎng)的部分,我們可以根據(jù)根據(jù)哪些函數(shù)被標(biāo)記為紅色對(duì)系統(tǒng)的代碼進(jìn)行優(yōu)化
補(bǔ)充
Function Name:方法名稱。
Calls:方法被調(diào)用的次數(shù)。
Calls%:方法調(diào)用次數(shù)在同級(jí)方法總數(shù)調(diào)用次數(shù)中所占的百分比。
Incl.Wall Time(microsec):方法執(zhí)行花費(fèi)的時(shí)間,包括子方法的執(zhí)行時(shí)間。(單位:微秒)
IWall%:方法執(zhí)行花費(fèi)的時(shí)間百分比。
Excl. Wall Time(microsec):方法本身執(zhí)行花費(fèi)的時(shí)間,不包括子方法的執(zhí)行時(shí)間。(單位:微秒)
EWall%:方法本身執(zhí)行花費(fèi)的時(shí)間百分比。
Incl. CPU(microsecs):方法執(zhí)行花費(fèi)的CPU時(shí)間,包括子方法的執(zhí)行時(shí)間。(單位:微秒)
ICpu%:方法執(zhí)行花費(fèi)的CPU時(shí)間百分比。
Excl. CPU(microsec):方法本身執(zhí)行花費(fèi)的CPU時(shí)間,不包括子方法的執(zhí)行時(shí)間。(單位:微秒)
ECPU%:方法本身執(zhí)行花費(fèi)的CPU時(shí)間百分比。
Incl.MemUse(bytes):方法執(zhí)行占用的內(nèi)存,包括子方法執(zhí)行占用的內(nèi)存。(單位:字節(jié))
IMemUse%:方法執(zhí)行占用的內(nèi)存百分比。
Excl.MemUse(bytes):方法本身執(zhí)行占用的內(nèi)存,不包括子方法執(zhí)行占用的內(nèi)存。(單位:字節(jié))
EMemUse%:方法本身執(zhí)行占用的內(nèi)存百分比。
Incl.PeakMemUse(bytes):Incl.MemUse峰值。(單位:字節(jié))
IPeakMemUse%:Incl.MemUse峰值百分比。
Excl.PeakMemUse(bytes):Excl.MemUse峰值。單位:(字節(jié))
EPeakMemUse%:Excl.MemUse峰值百分比。
以上就是PHP7下安裝并使用xhprof性能分析工具的詳細(xì)內(nèi)容,更多關(guān)于PHP7下安裝并使用xhprof的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- 詳解各種PHP函數(shù)漏洞
- 如何使用SublimeText3配置 PHP IDE環(huán)境
- PHPStorm+Xdebug進(jìn)行emote Debug時(shí)無(wú)法進(jìn)入斷點(diǎn)問(wèn)題排查
- php中foreach遍歷類對(duì)象的總結(jié)
- php-fpm報(bào)502問(wèn)題的解決辦法
- PHP實(shí)現(xiàn)創(chuàng)建以太坊錢包轉(zhuǎn)賬等功能
- 如何使用php生成zip壓縮包
- 詳解PHP使用非對(duì)稱加密算法RSA
- php常見(jiàn)的網(wǎng)絡(luò)攻擊及防御方法
- PHP遠(yuǎn)程調(diào)用以及RPC框架
- PHP代碼加密和擴(kuò)展解密實(shí)戰(zhàn)
- 再談PHP未來(lái)之路
相關(guān)文章
PHP實(shí)現(xiàn)的敏感詞過(guò)濾方法示例
這篇文章主要介紹了PHP實(shí)現(xiàn)的敏感詞過(guò)濾方法,涉及php字符串正則匹配、分割、轉(zhuǎn)換等相關(guān)操作技巧,需要的朋友可以參考下2019-03-03PHP入門教程之操作符與控制結(jié)構(gòu)流程詳解
這篇文章主要介紹了PHP入門教程之操作符與控制結(jié)構(gòu)流程,結(jié)合實(shí)例形式詳細(xì)分析了php基本的賦值、自增、比較、三目運(yùn)算符以及if語(yǔ)句、switch語(yǔ)句、for語(yǔ)句等流程控制語(yǔ)句的使用技巧,需要的朋友可以參考下2016-09-09Trying to clone an uncloneable object of class Imagic的解決方法
使用網(wǎng)上流傳的一個(gè)程序?qū)崿F(xiàn)pdf截圖為png,需要使用Imagic擴(kuò)展2012-01-01利用客戶端緩存對(duì)網(wǎng)站進(jìn)行優(yōu)化的原理分析
你的網(wǎng)站在并發(fā)訪問(wèn)很大并且無(wú)法承受壓力的情況下,你會(huì)選擇如何優(yōu)化?2008-09-09PHP實(shí)現(xiàn)將Word文件保存到SQL Server數(shù)據(jù)庫(kù)
這篇文章主要介紹了如何利用PHP實(shí)現(xiàn)將上傳的Word文件保存到SQL Server數(shù)據(jù)庫(kù),文中的示例代碼講解詳細(xì),需要的可以參考一下2022-02-02