打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Profiling PHP Scripts with Xdebug

I‘ve started to play a bit with Xdebug, a PHP extension that‘s designed to provide profiling information for PHP scripts and script execution analysis, amongst other things. This is fun, this is interesting, and this is invaluable when you really want to optimize the last bits of a script or a function.

My test install is running XAMPP on Windows, and activation is dead easy since the precompiled php_xdebug.dll is bundled with the PHP distribution. Installation on any other system shouldn‘t be really harder anyway, assuming you have access to the php.ini file and can add some extensions to PHP

With XAMPP for Windows, you just have to add the following to your php.ini (usually located in xampp/apache/bin)

CODE:
  1. zend_extension_ts = "C:\path\to\xampp\php\extensions\php_xdebug.dll"

Then add something like the following section. I haven‘t really tuned this yet, these are mostly default and "do everything you can do" options.

CODE:
  1. [xdebug]
  2. xdebug.auto_trace = 1
  3. xdebug.collect_includes = 1
  4. xdebug.collect_params = 1
  5. xdebug.collect_return = 1
  6. xdebug.default_enable = 1
  7. xdebug.extended_info = 1
  8. xdebug.show_local_vars = 0
  9. xdebug.show_mem_delta = 1
  10. xdebug.trace_format = 1
  11. xdebug.trace_options = 0
  12. xdebug.trace_output_dir ="C:\path\to\xampp\tmp"
  13. ; Remote
  14. xdebug.remote_enable=1
  15. xdebug.remote_mode="req"
  16. xdebug.remote_host=127.0.0.1
  17. xdebug.remote_port=17869
  18. xdebug.idekey=<idekey>
  19.  
  20. ; Mode 1
  21. xdebug.remote_handler="gdb"
  22. xdebug.auto_profile = 1
  23. xdebug.auto_profile_mode = 2
  24. xdebug.output_dir = "C:\path\to\xampp\tmp"
  25.  
  26. ; Mode 2
  27. xdebug.remote_handler="DBGp"
  28. xdebug.profiler_enable = 1
  29. xdebug.profiler_output_dir = "C:\path\to\xampp\tmp"
  30. xdebug.profiler_output_name = "debug.out"
  31.  
  32. xdebug.dump.SERVER = REMOTE_ADDR,REQUEST_METHOD

Now, don‘t forget to restart or reload the Apache so changes can apply. Result of this ? Whenever you run a PHP script, a trace file is created in the tmp directory, containing informations about how many times a function was called, how many milliseconds it took, and such.

The file itself is not very human readable, and on Windows you need WinCacheGrind, a freeware viewer for files generated by xdebug.

For instance, check this screenshot for the kind of results that a front page call on Wordpress produces. It makes spotting suspiciously CPU greedy functions a trivial task, can help you understand the code flow and can give hints on how optimize your code.

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
mac安装xdebug调试php
Windows7 64位安装配置Apache2.4+PHP5.4+MySQL5.5+Xdebug | 蝶浪网络::Deloz.Net
PHP xdebug安装
php获取页面执行时间、数据库读写次数、函数调用次数等
PHP文件上传主要代码讲解
var_dump()格式化竖排
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服