我的问题是基于这篇文章。
如何通过 Xdubug2 制作有关 PHP 代码的分析数据,然后将其放入 KCacheGrind 之类的应用程序中?
我在我的 Ubuntu 中成功使用了 Xdebug,因为它在浏览器中突出显示了我的错误消息。但是,我还没有找到任何终端工具,例如xdebug
.
我想有一个像这样的 PHP 代码的可视化视图
我的问题是基于这篇文章。
如何通过 Xdubug2 制作有关 PHP 代码的分析数据,然后将其放入 KCacheGrind 之类的应用程序中?
我在我的 Ubuntu 中成功使用了 Xdebug,因为它在浏览器中突出显示了我的错误消息。但是,我还没有找到任何终端工具,例如xdebug
.
我想有一个像这样的 PHP 代码的可视化视图
将此行添加到您的 php.ini
xdebug.profiler_enable = 1
然后,如果您碰巧通过网络服务器运行 PHP,则需要重新启动网络服务器,否则不会获取 conf 更改。
如果您通过 cli 运行 PHP,那么当然不需要重新启动。
现在,当您运行 PHP 脚本时,会在 xdebug.profiler_output_dir php.ini 设置指定的目录中创建一个 cachegrind.out.PID 文件。默认为 /tmp。
该文件是 kcachegrind 能够加载的文件。
还有其他方法可以调用此配置文件生成,您可以在http://www.xdebug.org/docs/all_settings#profiler_enable阅读它们
看看 WebGrind ( http://code.google.com/p/webgrind/ )
我遇到了类似的情况,我只能访问终端,而不是可以测试的视觉环境。更糟糕的是,我使用的是 Windows 机器和 Putty。
可用的解决方案是
对我来说,答案是将 cachegrind 文件 SCP 到我的本地 Windows 机器上,并使用 WinCachegrind 来查看它们。您可以将它们 SCP 到您的 linux 机器上并在文件上运行 KCacheGrind。这样做的缺点是您可能没有相同的文件结构,因此您将无法查看源代码。如果您在本地计算机上也有源代码,或者可以在那里获取,您也可以修复此问题。在 vim(或其他编辑器)中打开 cachegrind 文件,并在路径上进行全局搜索和替换,以将它们更改为本地计算机上的正确源路径。
我希望这就是你要找的。
编辑以解决评论:
如果您正在努力获得一个有所不同的 callgrind 文件。为此,您需要在 Linux 中运行(我认为您是)并拥有可用的 callgrind 和 valgrind 程序。这里要假设的最后一件事是您将 PHP 作为 Apache mod 运行,而不是以其他方式运行。对apache的启动使用callgrind工具,然后在浏览器中运行请求。这不仅会为您提供有关 php 调用树的详细信息,还会为您提供有关 Apache 中可能导致问题的许多内容的详细信息。
这是一个例子
sudo callgrind --dump-instr=yes --trace-jump=yes -v /usr/sbin/httpd -X
-X 将以调试模式启动 apache,只有一个线程。从这里打开一个网络浏览器并点击你想要的 php 脚本。然后返回并关闭apache。这也应该结束 callgrind 解析。
如果您不需要 apache 或 Web 浏览器,您可以尝试仅使用 php 命令运行 callgrind
sudo callgrind --dump-instr=yes --trace-jump=yes -v /usr/sbin/php my_php_script.php
那应该会给您相同的结果,但没有所有 apache 的东西。