PHP和MySQL中的错误监控


Error monitoring in PHP and MySQL

是否有任何报告/日志表明服务器上发生了所有PHP和MySQL错误?包括日期、时间、一些用户信息(浏览器、IP),以及发生错误的次数(如果可能的话)。

此外,每次我的mysql_query失败时,都会从包含的文件中提取消息:

$error_message[0] = 'Error no. 0!';
$error_message[1] = 'Error no. 1!';
$error_message[2] = 'Error no. 2!';

有没有办法监控显示的信息和时间?

是的,httpd(或apache)和mysqld都有错误日志。

你可以在中找到它们

/var/log/httpd/error_log
/var/log/mysqld.log

(这些路径在服务器上可能会有点不同,这取决于配置文件,例如,您可以指定mysql错误日志文件的位置,将--log error=XXX选项传递给mysqld)

您可以通过坚持异常而不是"die()"调用,并捕获它们,然后进行日志记录来实现这一点。

很好的解决方案是例如Sentry-它以您需要的方式保存信息(发生时间、详细信息、发生次数、记录器/类别、级别等)。

如果是Linux/UNIX服务器,请查看/var/logs/apache//var/logs/httpd/

"有没有办法监控显示的消息和时间?"

这不是主要问题,但是,如果你担心暴露的错误消息,你可以简单地禁用在PHP中显示错误,这实际上意味着你不会让MySQL错误也显示给访客(你正在通过PHP处理MySQL,如果你谈论的是一个web应用程序)

这可能会有所帮助!:)

你认为try, catch会起作用吗?你只需要在任何地方使用它,就可以捕捉到所有可能的错误。

您也可以创建自己的MySQL适配器类,然后将原始函数封装在try, catch块中。如果您可以将其应用于代码,那么这将更容易,但对于PHP错误,仍然需要覆盖可能出现致命错误的部分,例如使用try, catch块手动处理文件系统。

当你将它们记录在数据库或文件系统中时,显然你也可以记录日期和时间。

PHP手册/异常

注意:您也可以考虑开销!您可以进行基准测试,看看在使用try, catch块后,您的代码会慢多少。