制作一个自己的xhprof测试平台
1、首先安装php开发环境,比如lnmp。
2、安装xhprof,记住从github上面下载(https://github.com/phacility/xhprof),不要从pecl.php.net站点下载,可能不支持高版本(比如本人使用的php5.4)。
安装步骤:
1 解压文件
2 cd extension
3 /usr/local/php/bin/phpize
4 ./configure--with-php-config=/usr/local/php/bin/php-config --enable-xhprof
5 make
6 make install
7 cd /usr/local/php/etc
8 vim php.ini 在其中添加
extension=xhprof.so
xhprof.output_dir="/www/xhprof/tmp" //注意创建此目录
重启lnmp后,查看phpinfo输出信息。查看到xhprof相关信息即代表成功。
3、搭建一个站点,我将代码放在/www/xhprof目录下,拷贝刚才下载到xhprof安装包中的xhprof_html和xhprof_lib 2个目录。
创建测试php文件(见代码xhprof_html/test.php)
4、安装扩展使其支持图形化
yum-y install dot*
yuminstall graphviz
5、修改php.ini配置文件,将disable_functions中proc_open删除。
6、修改php中auto_prepend_file和auto_append_file这2个配置(以下2个文件参见代码)
auto_prepend_file=/www/xhprof/xhprof_html/header.php
auto_append_file=/www/xhprof/xhprof_html/footer.php
7、修改open_basedir的值,指向/www/xhprof。
8、至此该服务器下所有站点都可以产生xphrof相关信息了。
【header.php】
<?php
if (extension_loaded('xhprof')) {
include_once '/www/xhprof/xhprof_lib/utils/xhprof_lib.php';
include_once '/www/xhprof/xhprof_lib/utils/xhprof_runs.php';
xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);
}
?>
【footer.php】
<?php
if (extension_loaded('xhprof')) {
$profiler_namespace = 'xhprof_foo';
$xhprof_data= xhprof_disable();
$xhprof_runs= new XHProfRuns_Default();
$run_id= $xhprof_runs->save_run($xhprof_data, $profiler_namespace);
echo""."<a target=\" _blank\=\"\"href=\"http://www.xhprof.dev/xhprof_html/index.php?run=" . $run_id ."&source=" .$profiler_namespace. "\">TableView" . "</a>";
echo" ";
echo""."<a target=\" _blank\=\"\"href=\"http://www.xhprof.dev/xhprof_html/callgraph.php?run=" .$run_id . "&source=" .$profiler_namespace. "\">PhotoView" . "</a>";
}
?>
【test.php】
<?php
//同时分析CPU和Mem的开销
xhprof_enable(XHPROF_FLAGS_CPU +XHPROF_FLAGS_MEMORY);
//要测试的代码 开始
for($i=0;$i<10000;$i++){
strtoupper(substr(md5(md5(mt_rand())),1,20));
echo$i.'<br />';
}
//结束测试代码
$xhprof_data = xhprof_disable();
$XHPROF_ROOT = '/www/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, "xhprof_foo");
echo ""."<atarget=\" _blank\=\"\"href=\"http://www.xhprof.dev/xhprof_html/index.php?run=" . $run_id ."&source=xhprof_foo\">XHProf" . "</a>";