调试的魅力-PHP篇

在PHP开发中,经常会遇到各种问题,不管是开发环境、测试环境、生产环境,如果快速定位、解决发生的问题,是体现一个人技术和价值的关键,所以列出以下几个点,以供参考:

 

1、基本调试

echo、print_r、var_dump等直接一步一步打印出变量,知道定位问题。

优点:

快速、简单、暴力

缺点:

效率太低、很多无用代码、生产环境不易调试

 

2、基本调试进阶

在第1点上根据环境(本地环境、开发环境、生产环境)、参数等自动识别。

优点:

快速、简单、减少出错的可能

缺点:

效率太低、很多无用代码

 

3、LOG日志

 

在对应的地方写入日志文件,收集想要的数据:如参数、__CLASS__、__FUNCTION__、DEBUG_TRACE等。

优点:

快速、简单、想要的数据清晰简单明了

缺点:

很多无用代码、日志文件越来越多、越来越大。

 

4、XDEBUG

xdebug作为PHP调试和优化,是个不错的选择。

优点:

快速定位问题、实时监控变量

缺点:

生产环境不便使用,性能消耗太大。

安装步骤:

a)翻墙安装chrome xdebug helper插件

https://chrome.google.com/webstore/detail/xdebug-helper/eadndfjplgieldjbigjakmdgkmoaaaoc?hl=zh-CN

安装完后如下:

 

b)启动xdebug helper插件,启动后如下,变成绿色:

c)配置xdebug helper 的IDE Key 为 PhpStorm

 

d)依次打开 PHPStorm 中的 Run>Start Listening for PHP Debug Connections

 

e:插入断点然后调试:

 

5、xhprof

xhprof对生产环境侵入安全、方便,能有完整的监控报表和优化建议。

 

优点:

实时了解性能缺陷和可优化的代码,可部署到生产环境,侵入简单、快捷

缺点:

fackbook已不再维护。

安装步骤:

a)访问 https://github.com/phacility/xhprof, clone 对应代码,然后进入extension,安装扩展,详情可以参考如下:

https://laravel-china.org/topics/3142/php-performance-tracking-and-analysis-tool-xhprof-installation-and-use

 

备注:如果在使用过程中,根据run_id访问性能报表出现错误,最大可能是你日志输出的目录权限不够,建议改为:777,在这个上面踩了一个坑。

[xhprof]
extension=xhprof.so
xhprof.output_dir=/data/huowu/xhprof/output(最有可能该目录权限不够)

 

6、gdb

gdb可以快速定位出现的问题,相比xhprof更快速,不需要安装那么多东西。

优点:

生产环境快速响应、定位问题。

缺点:

提前需要了解系统级别原理,如gdb内核原理,C++等。

 

安装:

$ sudo yum install gdb

$ gdb -p [进程ID]

执行对应的命令,直至找到对应的性能问题。

http://linuxtools-rst.readthedocs.io/zh_CN/latest/tool/gdb.html

http://www.laruence.com/2011/06/23/2057.html

 

 

参考资料:

https://xdebug.org/

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

https://github.com/phacility/xhprof

https://www.gnu.org/software/gdb/

 

 

Leave a Comment