我所做的是
发生数据库错误意味着它可能是一个简单的错误或致命的错误,例如 MySQL 服务器已消失。那时尝试访问数据库将毫无用处。
- 即时创建错误日志文件。
- 如果文件大小为 0 字节/不存在,我会触发一封电子邮件,然后将错误记录到新创建的文件中。
- 如果发生更多错误,我会将它们全部记录下来。
- 处理错误后,我清除/删除文件。
- 下次发生错误时,我再次收到邮件。
我知道它具有删除文件的唯一手动工作。但是你用这个方法解决了很多问题。
/**
* THIS FUNCTION LOGS THE ERRORS TO THE FILE
* @param string $error_details Details of The Error
* @return bool
*/
function saveErrorToFile($error_details){
$file_path = JPATH_COMPONENT_ADMINISTRATOR.DS.'helpers'.DS.'error_log.txt';
if(!JFile::exists($file_path ))
{
//create the file and write the error
JFile::write($file_path,$error_details);
//send the mail with the error
$mail =& JFactory::getMailer();
$mail->setSender(array('support@abc.com', 'support'));
$mail->setSubject('DATABASE ERROR');
$mail->setBody($error_details);
$mail->IsHTML(true);
$mail->addRecipient('dasun@abc.com');
$mail->Send();
}
else
{
//read the existing content of the file and append with the new error
$file_content = JFile::read($file_path);
$file_content = $file_content."\n\n".$error_details;
JFile::write($file_path,$file_content);
}
return true;
}