zoukankan      html  css  js  c++  java
  • 使用xdebug对php做性能分析调优

     

    作为PHP程序员我们或多或少都了解或使用过xdebug。此文章记录安装和配置xdebug,以及如何使用它来分析php程序。

    我的机器环境: macphp

    安装 xdebug

    推荐使用 pecl 安装扩展

    pecl install xdebug

    注:可以选择版本, https://pecl.php.net/package/xdebug

    启用和配置

    如果不知道php的配置文件,可以用 php --ini 查看

    启用 xdebug,添加一个独立的 ext-xdebug.ini 到 php 的配置目录

    [xdebug]
    zend_extension="xdebug.so"
    # profiler功能的开关,默认值0,如果设为1,则每次请求都会生成一个性能报告文件。
    # xdebug.profiler_enable=0
    # 默认值是0,如果设为1 则当我们的请求中包含 XDEBUG_PROFILE 参数时才会生成性能报告文件
    xdebug.profiler_enable_trigger=1
    # 分析文件保存目录, 默认是 /var/tmp
    xdebug.profiler_output_dir="/var/tmp/xdebug"
    

    现在使用 php -m 能看到 xdebug,并且使用 php --ri xdebug 能看到配置项都生效就ok了。

    访问并生成分析文件

    使用 fpm 要重启,扩展才能生效

    现在我们可以访问php项目,记得在请求参数带上 XDEBUG_PROFILE, 类似 http://127.0.0.1:5671/my?XDEBUG_PROFILE

    ok, 现在xdebug应该已经在我们配置的分析文件保存目录产生了文件, 类似

    % ll /var/tmp/xdebug 
    -rw-r--r--  1 user  group    48K  4 29 13:40 cachegrind.out.37947
    

    生成的分析文件直接查看是难以阅读的。所以我们要使用分析查看工具

    分析查看工具

    使用qcachegrind

    要查看分析图表,需要安装 graphviz:

    brew install graphviz
    

    安装qcachegrind

    brew install qcachegrind
    

    在命令行里使用 qcachegrind 打开它,然后通过它打开要分析的文件。

    也可以在命令后直接跟要分析的文 qcachegrind /var/tmp/xdebug/cachegrind.out.37947

    使用webgrind

    下载: https://github.com/jokkedk/webgrind

    要查看分析图表,同样需要安装 graphviz.

    分析的时候 "Call Graph" 功能用不了

    • 方法 1
    sudo ln -s /usr/local/bin/dot /usr/bin/dot
    
    • 方法 2 修改 config.php
        /**
         * Path to graphviz dot executable
         */
        static $dotExecutable = '/usr/local/bin/dot';
        // static $dotExecutable = '/usr/bin/dot';
    

    运行:

    php -S 0.0.0.0:80 index.php
    

    现在,你可以访问: http://localhost

     

     

  • 相关阅读:
    使用supervisor做进程控制
    HDU 4272 LianLianKan [状态压缩DP]
    UVALive 4297 First Knight [期望+高斯消元(优化)]
    HDU 4269 Defend Jian Ge [模拟]
    POJ 2497 Widget Factory [高斯消元解同余方程组]
    HDU 2996 In case of failure [KD树]
    HDU 4268 Alice and Bob [贪心]
    HDU 4273 Rescue [三维几何]
    HDU 4267 A Simple Problem with Integers [树状数组]
    HDU 4271 Find Black Hand [最短编辑距离DP]
  • 原文地址:https://www.cnblogs.com/sunsky303/p/11544520.html
Copyright © 2011-2022 走看看