我正在尝试在我的 PHP 应用程序中创建跟踪日志。打开 Debug模式将开始跟踪函数的流程。
以下是我对实现的期望:
function callA(x) { ... } //XYZ.php
function callB() { ... callA(1) ... } //ABC.php
callB(); //main.php
我想跟踪 PHP 代码的流程。
我知道我可以使用 debug_backtrace ,但在这种情况下,我需要在其中一个函数中明确调用 debug_backtrace
。
但是,我想要的是自动跟踪代码的流程。
有什么办法吗
最佳答案
通常,这将通过像 xdebug 这样作为 PHP 扩展运行的分析器来完成。但是,如果您必须通过 PHP 本身编写的代码来跟踪函数调用,那么最好的办法就是使用 register_tick_function
。它每隔几个 native CPU 周期就会调用您的“滴答函数”,而不是等待另一个函数调用。
declare(ticks = 1);
$calls = array();
function tracer() {
global $calls;
$calls[] = array_shift(debug_backtrace());
}
register_tick_function('tracer');
关于php - 跟踪 PHP 中的每个函数调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36930041/