3

我正在尝试在我的 PHP 应用程序中创建跟踪日志。打开调试模式将开始跟踪函数的流程。

以下是我期望的实现:

function callA(x) { ... }  //XYZ.php
function callB() { ... callA(1) ... }  //ABC.php

callB(); //main.php

我想跟踪 PHP 代码的流程。

我知道我可以使用debug_backtrace,但在这种情况下,我需要显式调用debug_backtrace其中一个函数。

但是,我想要的是自动跟踪代码流。

有没有办法做到这一点。

4

1 回答 1

3

通常,这将使用像 xdebug 这样作为 PHP 扩展运行的分析器来完成。但是,如果您必须通过用 PHP 本身编写的代码来跟踪函数调用,那么您能做的最好的事情就是register_tick_function每隔几个本机 CPU 周期调用一次“tick 函数”,而不是等待另一个函数调用。

declare(ticks = 1);
$calls = array();
function tracer() {
    global $calls;
    $calls[] = array_shift(debug_backtrace());
}
register_tick_function('tracer');
于 2016-04-29T05:31:46.013 回答