php7性能分析工具xhprof使用

官方地址

xhprof分析脚本引入
在需要分页的页面最前面引入即可,不建议全局引入
xhprof扩展安装
git clone https://github.com/longxinH/xhprof
cd xhprof/extension/
phpize
./configure --with-php-config=/usr/local/php/bin/php-config --enable-xhprof
make && make install

php扩展配置
[xhprof]
extension=xhprof.so
xhprof原生web支持 当前不采用
xhprof自带web页面配置
mkdir /home/ding/xhprof
cp -r xhprof/xhprof_html  /home/ding/xhprof/
cp -r xhprof/xhprof_lib /home/ding/xhprof/


xhprof.php 首页引入文件
xhprof_enable(XHPROF_FLAGS_NO_BUILTINS + XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);
register_shutdown_function(function(){
    $data = xhprof_disable();   //返回运行数据
    include '/home/ding/projects/xhprof/xhprof_lib/utils/xhprof_lib.php';
    include '/home/ding/projects/xhprof/xhprof_lib/utils/xhprof_runs.php';
    $objXhprofRun = new XHProfRuns_Default();
    $objXhprofRun->save_run($data, "test"); //test 表示文件后缀
});

nginx配置
xhprof.com
    root /home/ding/projects/xhprof/xhprof_html

xhprof.com域名访问web页面


图形扩展安装  自带的需要安装graphviz才能展示
yum install graphviz
配置php请求自动加载文件方法
1. 在php.ini中添加:
    加载前
    auto_prepend_file = /var/www/head.php
    加载后
    auto_append_file = /var/www/foot.php

2. 或者在.htaccess中添加
    php_value auto_prepend_file = /home/ding/projects/xhprof.php
    #php_value auto_append_file = /var/www/foot.php

3. nginx配置中添加
    在enable_php.config 文件中添加
    fastcgi_param PHP_VALUE "auto_prepend_file=/home/ding/projects/xhprof.php";
mongodb安装
xhgui采用mongodb存储数据
mongodb版本不易过高,把mongodb 版本降级为3.4
centos
    tar zxf mongodb-linux-x86_64-3.2.9.tgz
    mv mongodb-linux-x86_64-3.2.9 /usr/local/mongodb
    cd /usr/local/mongodb
    mkdir db
mac
    brew install mongodb
mongodb扩展安装
tar zxf mongodb-1.3.0.tgz
cd mongodb-1.3.0
phpize
mac
    ./configure --with-php-config=/usr/local/php/bin/php-config --with-openssl-dir=/usr/local/Cellar/openssl/1.0.2n
centos
    ./configure --with-php-config=/usr/local/php/bin/php-config

make && make install

修改php.ini
    extension=mongodb.so

重启php-fpm
mongodb操作
启动mongodb
    nohup /usr/local/mongodb/bin/mongod --dbpath /usr/local/mongodb/db & > /home/ding/log/mongodb_init.log

客户端连接mongod
    #不指定--host就采用默认
    /usr/local/mongodb/bin/mongo --host 127.0.0.1:27017

    执行以下命令初始化xhprof数据库
    > use xhprof
    > db.results.ensureIndex( { 'meta.SERVER.REQUEST_TIME' : -1 } )
    > db.results.ensureIndex( { 'profile.main().wt' : -1 } )
    > db.results.ensureIndex( { 'profile.main().mu' : -1 } )
    > db.results.ensureIndex( { 'profile.main().cpu' : -1 } )
    > db.results.ensureIndex( { 'meta.url' : 1 } )
    > db.results.ensureIndex( { 'meta.simple_url' : 1 } )

    //过期时间设置,定期删除信息 删除5天前的数据
    > db.results.ensureIndex( { "meta.request_ts" : 1 }, { expireAfterSeconds : 432000 } )

    > exit

    清空数据


客户端关闭服务器
    > use admin;
    > db.shutdownServer();
xhgui 图形界面安装配置
工具使用
http://blog.it2048.cn/article_tideways-xhgui.html

代码安装
    cd ~/projects
    git clone https://github.com/laynefyc/xhgui-branch.git
    cd xhgui-branch
    php install.php

nginx配置
    xhgui.com
    root   /var/www/example.com/public/xhgui/webroot/;
    index  index.php;
    location / {
        try_files $uri $uri/ /index.php?$args;
    }
    include enable_php.config;



在enable_php.conf中添加

    location ~ \.php {
        fastcgi_pass unix:/tmp/php-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
        # 最长执行时间
        fastcgi_read_timeout 300;
        fastcgi_split_path_info       ^(.+\.php)(/.+)$;
        fastcgi_param PATH_INFO       $fastcgi_path_info;
        #添加php预加载文件
        fastcgi_param PHP_VALUE "auto_prepend_file=/Users/apple/projects/xhgui/external/header.php";
        fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }

域名过滤
    'profiler.enable' => function() {
        //域名过滤
        $domains = ["xyii.com"];
        $domain = $_SERVER['SERVER_NAME'];
        if(in_array($domain,$domains)){
            return true;
        }else{
            return false;
        }
    }

xhgui bug修复
    $profile = [];
    foreach($data['profile'] as $key => $value) {
        $profile[strtr($key, ['.' => '_'])] = $value;
    }
    $data['profile'] = $profile;
基本返回值解读
'ct' => 1,          执行的次数
'wt' => 793898,     执行时间
'cpu' => 110507,    cpu时间
'mu' => 6582856,    内存使用
'pmu' => 6990728,   内存峰值
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值