我在用 kcachegrind 解析的 php 脚本上有一个 xdebug 配置文件。这是一个屏幕截图,显示在任何给定函数中花费的时间最多<cycle 1>
,并且顶部的“调用者”来自 index.php 中的“include”和“include_once”。
此配置文件是在使用 apache 'ab' 的压力测试期间运行的,因此发生了许多并发连接。
<cycle 1>
xdebug 配置文件上的指示是什么?
我在用 kcachegrind 解析的 php 脚本上有一个 xdebug 配置文件。这是一个屏幕截图,显示在任何给定函数中花费的时间最多<cycle 1>
,并且顶部的“调用者”来自 index.php 中的“include”和“include_once”。
此配置文件是在使用 apache 'ab' 的压力测试期间运行的,因此发生了许多并发连接。
<cycle 1>
xdebug 配置文件上的指示是什么?
它是启发式循环检测。您可以从工具栏或菜单“查看->检测循环”或“查看->执行循环检测”将其关闭。
循环类似于递归,直接(f() -> f() -> f()
其中->
表示调用)和间接(f()->g()->f()->g()->f()
)
Callgring 格式(在 kcachegrind 中使用)不保存完整的调用堆栈,它只存储调用者-被调用者对,并且可能很难从这些信息中恢复更长的周期
尽管@osgx 提到您可以关闭循环检测,但我只想在这里指出,如果您觉得这<cycle 1>
隐藏了您感兴趣的内容,您可能应该按照他的解释关闭循环检测。
在我的案例中禁用循环检测实际上揭示了一些以前丢失的关键信息。