制作一个自己的xhprof测试平台

1.首先安装php开发环境,比如lnmp。

2.安装xhprof

ps:
记住从github上面下载(https://github.com/phacility/xhprof),
不要从pecl.php.net站点下载,可能不支持高版本(比如本人使用的php5.4)。

安装步骤:

1.解压文件 unzip

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 在其中添加

[xhprof]
extension=xhprof.so
xhprof.output_dir="/www/xhprof/tmp"  //注意创建此目录 

重启lnmp后,查看phpinfo输出信息。查看到xhprof相关信息即代表成功。

或者命令行输入:

php -m |grep xhprof

如果显示xhprof则表示成功:

** 如果是一键安装包安装的lnmp环境,可以使用以下命令,否则找到自己nginx和php的目录重启 **

重启nginx: nginx -s reload

重启phpfpm: /etc/init.d/php-fpm restart

3.搭建一个站点

将代码放在/www/xhprof目录下,拷贝刚才下载到xhprof安装包中的xhprof_html和xhprof_lib2个目录。

创建测试php文件(见代码xhprof_html/test.php)

4.安装扩展使其支持图形化

  • yum update
  • yum -y install dot*
  • yum install graphviz

5. 修改php.ini配置文件

  • 将disable_functions中proc_open删除。
  • 修改参数:auto_prepend_file =/www/xhprof/xhprof_html/header.php
  • 修改参数:auto_append_file =/www/xhprof/xhprof_html/footer.php
  • 可选修改open_basedir参数:open_basedir=/www/xhprof

ps:

open_basedir: 将 PHP 所能打开的文件限制在指定的目录树

用 open_basedir 指定的限制实际上是前缀,不是目录名。

也就是说“open_basedir = /dir/incl”也会允许访问“/dir/include”和“/dir/incls”,如果它们存在的话。

如果要将访问限制在仅为指定的目录,用斜线结束路径名。例如:“open_basedir = /dir/incl/”。

6. 至此该服务器下所有站点都可以产生xphrof相关信息了。

【header.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); //为测试test.php里使用这行
 //xhprof_enable(XHPROF_FLAGS_NO_BUILTINS | XHPROF_FLAGS_CPU | XHPROF_FLAGS_MEMORY); //线上可以使用这个
}

ps:

XHPROF_FLAGS_NO_BUILTINS (integer)

使得跳过所有内置(内部)函数。

XHPROF_FLAGS_CPU (integer)

使输出的性能数据中添加 CPU 数据。

XHPROF_FLAGS_MEMORY (integer)

使输出的性能数据中添加内存数据。

【footer.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 ""."Table View" . "";
    echo "    ";
    echo ""."Photo View" . "";
}

【test.php】

简单的测试代码

//要测试的代码 开始
for($i=0;$i<10000;$i++){
    strtoupper(substr(md5(md5(mt_rand())),1,20));
    echo $i.'
';
}
//结束测试代码

猜你喜欢

转载自www.cnblogs.com/luyuqiang/p/xhprof.html