我为我的网站编写了一个错误处理程序,如下所示:
function errorHandler($number, $string, $file, $line, $context, $type = '') {
// save stuff in DB
}
我这样注册:
set_error_handler('errorHandler', E_ALL);
我将所有传递的变量保存在数据库中,以及帮助我调试问题的回溯:
print_r(debug_backtrace(DEBUG_BACKTRACE_PROVIDE_OBJECT), true)
问题是我有时会收到此错误:
允许的内存大小 134217728 字节用尽(尝试分配 30084081 字节)
错误处理程序在出现上述错误时运行的原因是我在创建 Amazon S3 对象(来自他们的 PHP AWS 库)之后尝试使用未定义的变量。我假设由于 Amazon AWS 库非常庞大,以至于回溯正在提取大量数据,这会导致内存不足错误 (?)。
我想在可能的情况下包含回溯以帮助调试,但是如何防止调用该debug_backtrace()
函数导致致命错误(在我的错误处理程序中,这有点讽刺......)?