創建錯誤處理器
實現errorhandlerinterface接口
namespace?App; use?CoreAbstractInterfaceErrorHandlerInterface; class?Test?implements?ErrorHandlerInterface { ????function?handler(?$msg,$file?=?null,$line?=?null,$errorCode?=?null,$trace?) ????{ ????????echo?"文件{$file}的第{$line}行,錯誤:{$msg}"; ????} ????function?display($msg,$file?=?null,$line?=?null,$errorCode?=?null,$trace?) ????{ ????} ????function?log(?$msg,$file?=?null,$line?=?null,$errorCode?=?null,$trace?) ????{ ????} }
當開啟DEBUG.ENABLE的時候,則自定義錯誤處理有效。
IOC注入
在框架初始化后事件注入:
Di::getInstance()->set(SysConst::ERROR_HANDLER,Test::class);
注意,若在接下去的beforeWorker事件中有邏輯錯誤,則會導致在服務啟動前,錯誤處理類立即被實例化,若在處理函數內,有用到例如redis等連接,則會造成多進程連接共用問題,為避免該情況,可以利用task進程去轉換。
例如,發生錯誤信息的時候,則投遞至task進程,在task進程中去獲取一個單例的redis連接,來寫入錯誤信息。
推薦學習:?swoole視頻教程
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END
喜歡就支持一下吧
相關推薦