引言:XHProf是facebook开源出来的一个php轻量级的性能分析工具,跟Xdebug类似,但性能开销更低,还可以用在生产环境中,也可以由程序开 关来控制是否进行profile。 安装xhprof : wget http://pecl.php.net/get/xhprof-0.9.2.tgz tar zxf xhprof-0.9.2.tgz cd xhprof-0.9.2 cp -r xhprof_html xhprof_lib /www/www.hx.com/xhprof/ cd extension/ /usr/local/webserver/php/bin/phpize ./configure –with-php-config=/usr/local/webserver/php/bin/php-config make && make install 安装完提示: Installing shared extensions: /usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20060613/ php.ini中添加 extension_dir = "/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20060613/" 这句我原来就有了,就这用添加下面两句 extension=xhprof.so xhprof.output_dir=/www/logs/xhprof 分析日志输出在/www/logs/xhprof目录。 重新加载php配置文件和重启web /usr/local/webserver/php/sbin/php-fpm reload /usr/local/webserver/nginx/sbin/nginx -s reload 刷新phpinfo页面,看到输出中有了xhprof信息。 xhprof 0.9.2 CPU num 2 安装graphviz ,一个画图工具 wget http://www.graphviz.org/pub/graphviz/stable/SOURCES/graphviz-2.24.0.tar.gz tar zxf graphviz-2.24.0.tar.gz cd graphviz-2.24.0 ./configure make && make install 程序试例 头部: xhprof_enable(); //xhprof_enable(XHPROF_FLAGS_NO_BUILTINS); 不记录内置的函数 //xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY); 同时分析CPU和Mem的开销 $xhprof_on = true; 我觉得用xhprof_enable();就够用了,只统计运行时间(Wall Time)。 生产环境可使用: if (mt_rand(1, 10000) == 1) { xhprof_enable(); $xhprof_on = true; } 尾部: if($xhprof_on){ $xhprof_data = xhprof_disable(); $xhprof_root = '/www/www.hx.com/xhprof/'; include_once $xhprof_root."xhprof_lib/utils/xhprof_lib.php"; include_once $xhprof_root."xhprof_lib/utils/xhprof_runs.php"; $xhprof_runs = new XHProfRuns_Default(); $run_id = $xhprof_runs->save_run($xhprof_data, "hx"); echo '<a href=" http://192.168.1.158:858/xhprof/xhprof_html/index.php?run='.$run_id.'&source=hx" target="_blank">统计'; } 运行程序,底部出现统计字样,点过去就可以看到性能分析了。按运行时间排序,很容易找出化时间最长的函数。 点[View Full Callgraph]图形化显示,最大的性能问题会用红色标出,其次是×××,很明显。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。