您的位置:首页 > 运维架构 > Linux

centos安装php扩展xdebug安装以及用kcachegrind系统分析

2016-07-07 10:39 951 查看
来自:http://blog.csdn.net/21aspnet/article/details/7036087



一:安装

安装方法一:编译安装

 

1、下载PHP的XDebug扩展,网址:http://xdebug.org/

# wget http://pecl.php.net/get/xdebug-2.1.2.tgz

# tar -xzf xdebug-2.1.2.tgz

# xdebug-2.1.2

# cd xdebug-2.1.2

# /usr/local/php/bin/phpize

# ./configure --enable-xdebug --with-php-config=/usr/local/php/bin/php-config

# make && make install



不需要自己拷贝xdebug.so了,下面可以省。
# cp modules/xdebug.so /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613

注:/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/不同的PHP版本路径不同,也不一定要放在该路径,可以在zend_extension_ts中自行指定xdebug.so所在位置。

================================================

安装方法二:自动安装

http://pecl.php.net/package/xdebug

 

#  /usr/local/php/bin/pecl install xdebug 

安装成功



 

windows下安装:

需要注意使用custom installation instructions. 将你的phpinfo生成的内容放进去测试 看看下载那个dll

===============================================

二:修改php配置模块

1.配置

修改php.ini,去除PHP加速模块,增加以下配置信息支持XDebug扩展

手动安装

[Xdebug]   

zend_extension_ts="/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/xdebug.so" 

xdebug.profiler_enable=on  

xdebug.trace_output_dir="/tmp/xdebug"  

xdebug.profiler_output_dir="/tmp/xdebug" 

zend_extension也可以

 

自动安装

[Xdebug]

extension=xdebug.so

xdebug.profiler_enable=on

xdebug.trace_output_dir="/tmp/xdebug"

xdebug.profiler_output_dir="tmp/xdebug"

 

Windows下配置 

 用phpinfo()查看php配置文件位置,增加:

[plain] view
plain copy

extension=php_xdebug-2.2.0-5.3-vc9.dll  

  

[Xdebug]  

  

;开启自动跟踪  

xdebug.auto_trace = On  

;开启异常跟踪  

xdebug.show_exception_trace = On  

;开启远程调试自动启动  

xdebug.remote_autostart = On  

;开启远程调试  

xdebug.remote_enable = On  

;收集变量  

xdebug.collect_vars = On  

;收集返回值  

xdebug.collect_return = On  

;收集参数  

xdebug.collect_params = On  

  

xdebug.remote_enable=on  

xdebug.remote_handler=dbgp  

xdebug.remote_host=127.0.0.1  

xdebug.remote_port=9000    

  

xdebug.profiler_enable=on  

;xdebug.trace_output_name="%H.%s"  

xdebug.trace_output_dir="E:\PHPnow\xdebug"  

xdebug.profiler_output_dir="E:\PHPnow\xdebug"  

 

------------------------------

2.权限

# mkdir -p /tmp/xdebug

# chmod 755 /tmp/xdebug

注意这个一定要

chown www:www /tmp/xdebug

当前PHPFPM的用户组在PHPFPM的配置文件

[php] view
plain copy

; Unix user/group of processes  

; Note: The user is mandatory. If the group is not set, the default user's group  

;       will be used.  

user = nobody  

group = nobody  

这样就是,没有这个不会在tmp目录生成文件

# chown nobody:nobody /tmp/xdebug

 

正常的运行PHP会生成调试文件

-rw-r--r-- 1 nobody nobody 5758239 Oct 27 14:56 cachegrind.out.29270

-----------------------------

3.重启
/usr/local/apache/bin/apachectl  restart

 


说明:如果phpinfo()没有打印这个信息说明没有配置正确!

------------------------------

4.停用

说明:如果不分析系统一定要记得关闭xdebug.profiler不然会生成许多文件

xdebug.profiler_enable=off

 ====================================

三:分析系统

1.访问你的网站

将首页上各种链接点击几遍,XDebug在/tmp/xdebug目录生成文件

 

2.使用图形分析工具wincachedgrind分析生成的文件

下载地址:http://sourceforge.net/projects/wincachegrind/files/



 

3.下载图形化工具kcachegrind在windows下的可执行版

下载地址http://sourceforge.net/projects/precompiledbin/files

 

用kcachegrind来看会更形象,注意需要修改从linux中执行的文件的php文件路径,这样就可以了sourcecode.

 



查看代码执行顺序



 

 更复杂的代码:

[php] view
plain copy

<?php  

    define( 'BOOSTER', 5 );  

    define( 'CAPSULE', 2 );  

    define( 'MINUTE', 60 );  

    define( 'STAGE', 3 );  

    define( 'PRODUCTION', 1000 );  

      

    class Part {  

        function Part() {  

            $this->build( MINUTE );  

        }  

          

        function build( $delay = 0 ) {  

            if ( $delay <= 0 )  

                return;  

                  

            while ( $delay-- > 0 ) {  

            }  

        }  

    }  

      

    class Capsule extends Part {  

        function Capsule() {  

          parent::Part();  

            $this->build( CAPSULE * MINUTE );  

        }  

    }  

      

    class Booster extends Part {  

        function Booster() {  

          parent::Part();  

            $this->build( BOOSTER * MINUTE );  

        }  

    }  

      

    class Stage extends Part {  

        function Stage() {  

          parent::Part();  

          $this->build( STAGE * MINUTE );  

        }  

    }  

      

    class SpaceShip {  

        var $booster;  

        var $capsule;   

        var $stages;  

          

        function SpaceShip( $numberStages = 3 ) {  

            $this->booster = new Booster();  

            $this->capsule = new Capsule();  

            $this->stages = array();  

              

            while ( $numberStages-- >= 0 ) {  

                $stages[$numberStages] = new Stage();  

            }  

        }  

    }  

      

    $toys = array();  

    $count = PRODUCTION;  

      

    while ( $count-- >= 0  ) {  

      $toys[] = new SpaceShip( 2 );  

    }  

?>  

  

<html>  

<head>  

<title>  

Toy Factory Output  

</title>  

</head>  

<body>  

  <h1>Toy Production</h1>  

  <p>Built <? echo PRODUCTION . ' toys' ?></p>  

</body>  

</html>  

   

分析日志



 

其他使用参考:xdebug基本使用

===================================

参考

"

为 PHP 应用提速、提速、再提速!,第 2 部分: 分析 PHP 应用程序以查找、诊断和加速运行缓慢的代码

http://www.ibm.com/developerworks/cn/opensource/os-php-fastapps2/index.html

 

http://hi.baidu.com/%D4%E7%B9%C8%C9%E7%C7%F8/blog/item/d8fedafb7843c66b024f56cb.html

 

使用Xdebug跟踪代码执行

http://book.51cto.com/art/200906/126516.htm

KCacheGrind
windows 系統下的代替方案

WinCacheGrind

可分析由xdebug產出的cachegrind.xxx檔,簡易版的kcachegrind。

windows port of kcachegrind

由原linux的kcachegrind,重新編譯在windows上可執行版,功能與linux kcachegrind相同。

Webgrind

網頁版的callgrind,搭配xdebug可做即時線上做php script profile。

 

 

 

=================================== 

NetBeans配置Xdebug

http://blog.csdn.net/21aspnet/article/details/6754034

===================================

另外还有一个扩展也很好:

http://pecl.php.net/package/xhprof

安装参考:

http://www.phpv5.com/blog/archives/66

 

参考:

用 kcachegrind 调优 squid 2.7 笔记

http://blog.sunyixing.com/archives/378
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: