我正在尝试在PHP应用程序中创建一个跟踪器日志。打开调试模式将开始跟踪功能的流程。
以下是我期望的实施方式:
function callA(x) { ... } //XYZ.php
function callB() { ... callA(1) ... } //ABC.php
callB(); //main.php
我想跟踪PHP代码的流程。
我知道我可以使用debug_backtrace,但在这种情况下,我需要明确地在其中一个函数中调用debug_backtrace
。
但是,我想要的是自动跟踪代码流。
有没有办法做到这一点。
答案 0 :(得分:1)
通常情况下,这将使用像xdebug这样作为PHP扩展运行的分析器来完成。但是如果你必须通过用PHP本身编写的代码来跟踪函数调用,你可以做的最好的事情就是使用register_tick_function
调用你的" tick函数"每隔几个本机CPU周期而不是等待另一个函数调用
declare(ticks = 1);
$calls = array();
function tracer() {
global $calls;
$calls[] = array_shift(debug_backtrace());
}
register_tick_function('tracer');