昨天客服发邮件来问,页面出现了大堆的英文,出了啥事了。打开邮件一看,原来是服务器报警没关,把错误显示在页面了,再仔细看,是项目连接一个数据库,而那个数据库所在MySQL服务器连接打满了,以致抛出了个fatal error
。
解决办法,分两步:
设置
php.ini
中的display_error = off
,禁止页面显示错误在项目中捕获
fatal error
级别的错误,发送邮件、短信,形成报警机制
register_shutdown_function('cleanup');
function cleanup()
{
$e = error_get_last();
if ($e['type'] == E_ERROR) {
$str = <<<TYPEOTHER
[message] {$e['message']}
[file] {$e['file']}
[line] {$e['line']}
TYPEOTHER;
// todo 发送邮件、短信
}
}