昨天线上代码出现了一些小问题,被运营代理那边发现问题,还好报错的代码行数在关键的业务代码下边,只是造成了一点小影响不妨碍整体业务(万幸)。
经过这次事情我感觉得写个用来告警的代码,包裹一下对外的接口部分
class CodeError{
private $error_file;//异常文件
private $error_line;//异常行数
private $error_message;//异常内容
/**
* @param \Exception $exception
*/
public function __construct(\Exception $exception){
$this->error_line=$exception->getLine();
$this->error_file=$exception->getFile();
$this->error_message=$exception->getMessage();
}
/**
* 代码异常处理
* @param $exception
* @return void
*/
public function handle_error(){
$loginNotice=new LoginNotice();
$result=$loginNotice->Login_notice_show();
$queue = 'send-mail';
$data = [
"type"=>"code_error",//发送类型,代码错误
"send_email"=>$result['send_email'],
"smtp_code"=>$result['smtp_code'],
"email"=>$result['email'],
"error_file"=>$this->error_file,
"error_line"=>$this->error_line,
"error_message"=>$this->error_message
];
//使用消息队列发送错误代码信息
Client::send($queue, $data);
}
}
在接口部分用try….catch包裹,然后初始化CodeError类将异常对象$exception传入即可
然后在自行定义一个邮件通知类,用队列的方式进行邮件发送即可
/***
_ooOoo_
o8888888o
88" . "88
(| -_- |)
O\ = /O
____/`---'\____
.' \\| |// `.
/ \\||| : |||// \
/ _||||| -:- |||||- \
| | \\\ - /// | |
| \_| ''\---/'' | |
\ .-\__ `-` ___/-. /
___`. .' /--.--\ `. . __
."" '< `.___\_<|>_/___.' >'"".
| | : `- \`.;`\ _ /`;.`/ - ` : | |
\ \ `-. \_ __\ /__ _/ .-` / /
======`-.____`-.___\_____/___.-`____.-'======
`=---='
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
佛祖保佑 永无BUG
*/
最后希望大家写的代码都无bug
这里的消息队列,请参考webman框架消息队列