swoole中退出、異常與錯誤的處理筆記

關於PHP這方面的知識 能夠看 https://www.cnblogs.com/zyf-zhaoyafei/p/6928149.html 進行補課php

而後下面記錄一下使用swoole的時候須要注意的地方html

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------swoole

在官方文檔中 https://wiki.swoole.com/wiki/page/501.html函數

在swoole程序中禁止使用exit/die,若是PHP代碼中有exit/die,當前工做的Worker進程、Task進程、User進程、以及swoole_process進程會當即退出。php-fpm

建議使用try/catch的方式替換exit/die,實現中斷執行跳出PHP函數調用棧。spa

function swoole_exit($msg) { //php-fpm的環境 if (ENV=='php') { exit($msg); } //swoole的環境 else { throw new Swoole\ExitException($msg); } } 

以上代碼並未實現ENV常量和Swoole\ExitException,請自行實現日誌

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------code

而後說一下異常捕獲 https://wiki.swoole.com/wiki/page/498.htmlhtm

  • PHP代碼中若是有異常拋出,必須在回調函數中進行try/catch捕獲異常,不然會致使工做進程退出
  • 不支持set_exception_handler,必須使用try/catch方式處理異常

可經過register_shutdown_function來捕獲致命錯誤,在進程異常退出時作一些清理工做blog

例子 https://wiki.swoole.com/wiki/page/305.html

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

因而囉嗦了一大堆,其實須要注意的就是不要用 exit 函數,try的方式來處理異常,全局異常捕獲不能用,再實現一個register_shutdown_function 把錯誤也捕獲了

避免運行的時候出現什麼奇怪的問題,致使服務進程停止,同時也能夠記錄詳細的日誌。

相關文章
相關標籤/搜索