PHP7性能trace之xhprof的搭建和使用
2018-07-30 20:03:36 小德 PHP 访问次数 489


  1. 下载PHP7版本对应的xhprof  

    https://github.com/longxinH/xhprof

  2. cd  xhprof/extension/

  3. phpize

  4. make && make install  

        出现表示编译成功

 Installing shared extensions:     /usr/local/matrix/lib/php/extensions/no-debug-non-zts-20151012/

 5.配置php.ini 

        php  --v 可展示出php.ini的位置

        在PHP 配置文件中添加

[xhprof]
extension=xhprof.so
xhprof.output_dir=/usr/local/matrix/lib/php/extensions/no-debug-non-zts-20151012/

  重启PHP-fpm

6.将xhprof cp到自定义的某个目录下 

 

cp -r xhprof/xhprof_html  /data0/www/htdocs/xhprof/
cp -r xhprof/xhprof_lib  /data0/www/htdocs/xhprof/

7.使用

   

xhprof_enable();
//你需要分析的代码
$xhprof_data = xhprof_disable();
include_once '/data0/www/htdocs/xhprof/xhprof_lib/utils/xhprof_lib.php';
include_once '/data0/www/htdocs/xhprof/xhprof_lib/utils/xhprof_runs.php';

$xhprof_runs = new XHProfRuns_Default();

$run_id = $xhprof_runs->save_run($xhprof_data, "xhprof_test");
$href = "http://host:100/index.php?run=$run_id&source=xhprof_test";
echo "<a href='$href' target='_blank'>$href</a>";  // 将访问的url 输出
//将run_id保存起来或者随代码一起输出

配置结果展示的NGINX 

server {
    listen 100 default; 
    root /data0/www/htdocs/xhprof/xhprof_html;
    index index.php index.html index.shtml;
    location /{
        if (!-e $request_filename) {
            rewrite  ^/(.*)$  /index.php/$1  last;
            break;
        }
    }
    location ~ \.php($|/) {
    #location @php {
        include tengine.fastcgi.conf;
        fastcgi_index index.php;
        fastcgi_split_path_info  ^(.+\.php)(/.*)$;
        fastcgi_param  PATH_INFO $fastcgi_path_info;
        # fastcgi_param  SCRIPT_FILENAME "$document_root/index.php";
        fastcgi_pass php;
    }
    #location / {
    #    try_files $uri @php;
    #}
}


8.查看结果

访问$host_url:100/index.php?run=58d3b28b521f6&source=xhprof_test

9.图形化界面 报错  failed to execute cmd:" dot -Tpng". stderr:sh: dot:command not found。

解决方案 :yum install graphviz   ;还是不行,查看errorlog发现PHP禁用的proc_open,把这个去掉,重启PHP-fpm,就好。