PHP中全局错误处理的最佳实践?

时间:2010-02-16 21:37:10

标签: php error-handling

我使用了一个将错误转换为PHP 5中的异常的类,它将错误记录到文件中和/或将它们通过电子邮件发送到指定的帐户。有一个更好的方法吗?关于这一点,我知道可以更好。我正在使用set_error_handler。

set_error_handler("exception_error_handler");

我的代码完成了应该记录和发送电子邮件错误的内容,但我是以最佳方式完成此过程。将其记录到数据库会更好吗 - 假设错误中存在数据连接。网站的行业标准是什么?

2 个答案:

答案 0 :(得分:6)

您处理错误的代码必须绝对无懈可击。

有时它会因为你忘记测试的一个非常模糊的原因而开始,但你仍然希望它能够在它挣扎于天启的代码版本时运行。

将其输出写入数据库会对您的代码产生巨大的依赖性 - 并且缺少数据库很可能是导致报告问题的主要原因。

依赖邮件仍然是依赖关系,但是在发生中断时最直接的目标应该是让系统再次运行 - 因此发送电子邮件是提醒您需要修复某些内容的一种非常有效的方法。

PHP的文件处理工具不适合并发访问 - 所以虽然我建议在本地记录任何事件,但不要从代码中写入文件 - 使用syslog界面。一定要发送一封电子邮件,其中包含之后您已将其发送到系统日志的相关详细信息。

HTH

下进行。

答案 1 :(得分:3)

我不会将该逻辑转储到错误处理程序中。

Kohana查看此方法。

/**
* PHP error handler, converts all errors into ErrorExceptions. This handler
* respects error_reporting settings.
*
* @throws ErrorException
* @return TRUE
*/
public static function error_handler($code, $error, $file = NULL, $line = NULL)
{
    if (error_reporting() & $code)
    {
        // This error is not suppressed by current error reporting settings
        // Convert the error into an ErrorException
        throw new ErrorException($error, $code, 0, $file, $line);
    }

    // Do not execute the PHP error handler
    return TRUE;
}

清理并执行方法描述的内容。您现在可以将处理移动到异常处理程序或catch块内。