美文网首页PHP经验分享程序猿的进阶屋PHP实战
Tideways、xhprof 和 xhgui 打造 PHP 非

Tideways、xhprof 和 xhgui 打造 PHP 非

作者: guanguans | 来源:发表于2019-06-18 09:42 被阅读13次
    火焰图

    推荐阅读

    环境准备

    安装之前确保已经正确安装了以下软件

    • PHP
    • Nginx
    • Mongodb

    安装 PHP mongodb 扩展

    $ sudo pecl install mongodb
    

    PHP 配置文件中添加

    [mongodb]
    extension=mongodb.so
    

    安装 PHP tideaways 扩展

    常规编译安装

    $ git clone https://github.com/tideways/php-xhprof-extension.git
    $ cd /path/php-xhprof-extension
    $ phpize
    $ ./configure
    $ make
    $ sudo make install
    

    PHP 配置文件中添加

    [tideways]
    extension=tideways_xhprof.so
    ; 不需要自动加载,在程序中控制就行
    tideways.auto_prepend_library=0
    ; 频率设置为100,在程序调用时可以修改
    tideways.sample_rate=100
    

    安装 xhgui-branch(xhgui 的汉化版)

    $ git clone https://github.com/laynefyc/xhgui-branch.git
    $ cd xhgui-branch
    $ php install.php
    

    修改 xhgui-branch 配置文件

    <?php
    return array(
        ...
        'extension' => 'tideways_xhprof',
        ...
        'save.handler' => 'mongodb',
        'db.host' => 'mongodb://127.0.0.1:27017',
        'db.db' => 'xhprof',
        ...
    );
    

    启动 mongodb 并设置 xhgui 索引,命令如下:

    $ mongo
    
    > 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 } )
    

    xhgui 本地虚拟主机配置参考

    server {
        listen       80;
        server_name  xhgui.test;
        root         /Users/yaozm/Documents/wwwroot/xhgui-branch/webroot;
    
        # access_log  /usr/local/var/log/nginx/access.log;
        error_log  /usr/local/var/log/nginx/error.log;
    
        location / {
            try_files $uri $uri/ /index.php?$query_string;
            index  index.php index.html index.htm;
        }
    }
    

    针对要分析的站点进行设置,直接在要分析站点的 nginx 配置中增加以下项,然后使配置生效就可以了。

    $ fastcgi_param PHP_VALUE "auto_prepend_file=/path/xhgui-branch/external/header.php";
    

    参考配置

    server {
        listen       80;
        server_name  laravel.test;
        root         /Users/yaozm/Documents/wwwroot/laravel/public;
    
        # access_log  /usr/local/var/log/nginx/access.log;
        error_log  /usr/local/var/log/nginx/error.log;
    
        location / {
            try_files $uri $uri/ /index.php?$query_string;
            index  index.php index.html index.htm;
        }
        # 添加 PHP_VALUE,告诉 PHP 程序在执行前要调用的服务
        fastcgi_param PHP_VALUE "auto_prepend_file=/path/wwwroot/xhgui-branch/external/header.php";
    }
    

    或者也可以在修改 PHP 配置文件,告诉 PHP 程序在执行前要调用的服务

    ; Automatically add files before PHP document.
    ; http://php.net/auto-prepend-file
    auto_prepend_file = "/path/wwwroot/xhgui-branch/external/header.php"
    
    函数监控 调用图

    参考链接

    相关文章

      网友评论

        本文标题:Tideways、xhprof 和 xhgui 打造 PHP 非

        本文链接:https://www.haomeiwen.com/subject/narxqctx.html