早就聽(tīng)說(shuō)了xhprof這款由facebook開(kāi)源的php性能分析工具了,只是一直沒(méi)有使用過(guò),因?yàn)楣ぷ髦袕膩?lái)沒(méi)有對(duì)代碼進(jìn)行過(guò)性能分析.目前項(xiàng)目的代碼中集成了xhprof,所以最近抽空下載,安裝試用了下.特此記錄.
成都創(chuàng)新互聯(lián)是專業(yè)的臨高網(wǎng)站建設(shè)公司,臨高接單;提供網(wǎng)站建設(shè)、做網(wǎng)站,網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行臨高網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!要想讓xhprof能夠正常運(yùn)行,需要安裝以下擴(kuò)展.
1,libpng提供給graphviz試用,yum自帶
2.graphviz,xhprof需要用它繪圖,需要自己下載 wget http://www.graphviz.org/pub/graphviz/stable/SOURCES/graphviz-2.24.0.tar.gz
3.xhprof
在編譯安裝xhprof過(guò)程中,出現(xiàn)了error 1的bug,導(dǎo)致make錯(cuò)誤.安裝失敗
最后更換了xhprof的版本才通過(guò)
xhprof文件中有兩個(gè)重要的文件目錄:
1,xhprof_html,這個(gè)目錄中有個(gè)docs目錄,里面有關(guān)于xhprof的文檔.另外xhprof的分析結(jié)果文件需要使用xhprof_html中的index.php文件進(jìn)行結(jié)果顯示
2,xhprof_lib,這個(gè)目錄就是代碼中需要引入的文件
這兩個(gè)目錄都要放到站點(diǎn)下面.xhprof_html可以放到單獨(dú)的站點(diǎn)下,這樣就可以通過(guò)獨(dú)立的域名查看分析結(jié)果
3.examples,這個(gè)目錄下的sample.php是個(gè)測(cè)試文件
編譯安裝xhprof之后需要在php.ini中對(duì)此擴(kuò)展進(jìn)行設(shè)置
extension=xhprof.so
xhprof.output_dir=/www/logs/xhprof ,這里指定xhprof生成的分析結(jié)果文件,此目錄要實(shí)現(xiàn)建立,并需要有寫(xiě)權(quán)限
編寫(xiě)測(cè)試代碼:
0) { bar($x - 1); } } function foo() { for ($idx = 0; $idx < 2; $idx++) { bar($idx); $x = strlen("abc"); } } xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY); //代碼的開(kāi)頭指定 //xhprof_enable(XHPROF_FLAGS_NO_BUILTINS); 不記錄內(nèi)置的函數(shù) //xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY); 同時(shí)分析CPU和Mem的開(kāi)銷 foo(); //需要測(cè)試的代碼 $xhprof_data = xhprof_disable(); include_once "xhprof_lib/utils/xhprof_lib.php"; include_once "xhprof_lib/utils/xhprof_runs.php"; $xhprof_runs = new XHProfRuns_Default(); $run_id = $xhprof_runs->save_run($xhprof_data, "hx"); //$run_id.hx.xhprof就是生成的分析結(jié)果文件,寫(xiě)入到xhprof.output_dir目錄中,'hx'在文檔中稱為namespace $url = $xhprof_root."/xhprof_html/index.php?run=$run_id&source=hx"; //$xhprof_root就是訪問(wèn)xhprof_html的域名 echo ''.$url.'';在瀏覽器中打開(kāi)此$url就能看到分析結(jié)果了
Function Name 函數(shù)名
Calls 調(diào)用次數(shù)
Calls% 調(diào)用百分比
Incl. Wall Time (microsec) 調(diào)用的包括子函數(shù)所有花費(fèi)時(shí)間 以微秒算(一百萬(wàn)分之一秒)
IWall% 調(diào)用的包括子函數(shù)所有花費(fèi)時(shí)間的百分比
Excl. Wall Time (microsec) 函數(shù)執(zhí)行本身花費(fèi)的時(shí)間,不包括子樹(shù)執(zhí)行時(shí)間,以微秒算(一百萬(wàn)分之一秒)
EWall% 函數(shù)執(zhí)行本身花費(fèi)的時(shí)間的百分比,不包括子樹(shù)執(zhí)行時(shí)間
Incl. CPU(microsecs) 調(diào)用的包括子函數(shù)所有花費(fèi)的cpu時(shí)間。減Incl. Wall Time即為等待cpu的時(shí)間
減Excl. Wall Time即為等待cpu的時(shí)間
ICpu% Incl. CPU(microsecs)的百分比
Excl. CPU(microsec) 函數(shù)執(zhí)行本身花費(fèi)的cpu時(shí)間,不包括子樹(shù)執(zhí)行時(shí)間,以微秒算(一百萬(wàn)分之一秒)。
ECPU% Excl. CPU(microsec)的百分比
Incl.MemUse(bytes) 包括子函數(shù)執(zhí)行使用的內(nèi)存。
IMemUse% Incl.MemUse(bytes)的百分比
Excl.MemUse(bytes) 函數(shù)執(zhí)行本身內(nèi)存,以字節(jié)算
EMemUse% Excl.MemUse(bytes)的百分比
Incl.PeakMemUse(bytes) Incl.MemUse的峰值
IPeakMemUse% Incl.PeakMemUse(bytes) 的峰值百分比
Excl.PeakMemUse(bytes) Excl.MemUse的峰值
EPeakMemUse% EMemUse% 峰值百分比
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。