建立錯誤處理器
實作ErrorHandlerInterface介面
namespace App; use Core\AbstractInterface\ErrorHandlerInterface; 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影片教學
#以上是swoole自訂錯誤的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!