可锐资源网

技术资源分享平台,提供编程学习、网站建设、脚本开发教程

检查API到底慢在哪里(xampp+xdebug+qcachegrind)


在工作中经常会遇到一个API响应慢, 慢到高峰期超过十几秒,甚至更慢。这也不奇怪,一个只靠PHP和MYSQL硬撑住的系统怎么能不慢,当然还得有人写出最方便的SQl才能让慢的感觉更明显。

一个简单的api还是比较容易查出症结在那里,可对于经过多人长时间的维护,不断累加的需求的几百上千行错综复杂的调用关系的API来说,光靠打几个log已经不行了。我曾经只靠人工看代码和定点打log来判断,这个过程繁琐和不准确,所以我一直想找一个工具来代替我来做这个事。

这就是Xdebug3.1.3,这个版的xampp自带的是2.7,版本有点老了。测试环境是CI3框架,xampp3.2.4,PHP7.3.7 ,把xdebug.dll放到php扩展目录后,还要在php.ini增加下列几行配置让它生效。

extension=php_xdebug

[Xdebug]

xdebug.mode = profile

xdebug.profiler_enable=on

xdebug.output_dir = G:\xampp-7\php\tmp

xdebug.profiler_output_name = "cachegrind.out.%p"

重启php后,如果能看到下面的内容,就是有效了:

好了,现在每次访问站点页面或是API都会在 'G:\xampp-7\php\tmp' 目录里生成一个日志文件如:(cachegrind.out.14940)

这个文件里实际上已经有了需要的东西,可是太难读了,所以还需要一个分析工具来让结果更观清晰。在windows环境下可以用这个工具(qcachegrind074-32bit-x86),可以这在个里下载:
https://sourceforge.net/projects/qcachegrindwin/

这是个绿色无需安装的工具,运行它的可执行文件,并在file里选择读取xdebug文件的路径后,就可以分析显示图形结果,的确是好用,下面是显示界面:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言