Я пытаюсь создать журнал трассировки в моем приложении PHP. Включение режима отладки начнет отслеживать ход выполнения функции.
Ниже то, что я ожидаю в качестве моей реализации:
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
которая вызывает вашу «тиковую функцию» каждые несколько собственных циклов ЦП вместо ожидания вызова другой функции.
declare(ticks = 1);
$calls = array();
function tracer() {
global $calls;
$calls[] = array_shift(debug_backtrace());
}
register_tick_function('tracer');
Других решений пока нет …