hyperf / signal

[READ ONLY]
MIT License
4 stars 0 forks source link

捕捉处理SIGTERM 时提示错误信息 #1

Closed pmw1014 closed 3 years ago

pmw1014 commented 3 years ago

本地环境 php 7.3 swoole 4.6.1 hyperf/signal v2.1.0

本地配置默认handler

return [
    'handlers' => [
        Hyperf\Signal\Handler\CoroutineServerStopHandler::class => PHP_INT_MIN
    ],
    'timeout' => 5.0,
];

在发起kill -15 后显示

[2021-02-01 17:33:22 #9144.2]   INFO    Server is shutdown now
int(15)
int(15)
[WARNING] Error: Call to undefined method Swoole\Server\Port::shutdown()(0) in /data/wwwroot/gidserver/vendor/hyperf/signal/src/Handler/CoroutineServerStopHandler.php:52
Stack trace:
#0 /data/wwwroot/gidserver/vendor/hyperf/signal/src/SignalManager.php(83): Hyperf\Signal\Handler\CoroutineServerStopHandler->handle(15)
#1 /data/wwwroot/gidserver/vendor/hyperf/utils/src/Functions.php(271): Hyperf\Signal\SignalManager->Hyperf\Signal\{closure}()
#2 /data/wwwroot/gidserver/vendor/hyperf/utils/src/Coroutine.php(62): call(Object(Closure))
#3 {main}
[WARNING] Error: Call to undefined method Swoole\Server\Port::shutdown()(0) in /data/wwwroot/gidserver/vendor/hyperf/signal/src/Handler/CoroutineServerStopHandler.php:52
Stack trace:
#0 /data/wwwroot/gidserver/vendor/hyperf/signal/src/SignalManager.php(83): Hyperf\Signal\Handler\CoroutineServerStopHandler->handle(15)
#1 /data/wwwroot/gidserver/vendor/hyperf/utils/src/Functions.php(271): Hyperf\Signal\SignalManager->Hyperf\Signal\{closure}()
#2 /data/wwwroot/gidserver/vendor/hyperf/utils/src/Coroutine.php(62): call(Object(Closure))
#3 {main}
limingxinleo commented 3 years ago

你用的异步风格Server,就不要用协程风格的 Handler 了

pmw1014 commented 3 years ago

你用的异步风格Server,就不要用协程风格的 Handler 了

谢谢,我改异步风格返回这个:

[2021-02-01 18:16:01 #9194.2]   INFO    Server is shutdown now
int(15)
int(15)

===================================================================
 [FATAL ERROR]: all coroutines (count: 2) are asleep - deadlock!
===================================================================

===================================================================
 [FATAL ERROR]: all coroutines (count: 2) are asleep - deadlock!
===================================================================

 [Coroutine-3]
--------------------------------------------------------------------

 [Coroutine-3]
--------------------------------------------------------------------
#0  Swoole\Coroutine\System#0  Swoole\Coroutine\System::waitSignal(::waitSignal() called at [/data/wwwroot/gidserver/vendor/hyperf/signal/src/SignalManager.php:80]
#1  Hyperf\Signal\SignalManager->Hyperf\Signal\{closure}() called at [/data/wwwroot/gidserver/vendor/hyperf/utils/src/Functions.php:271]
#2  ) called at [/data/wwwroot/gidserver/vendor/hyperf/signal/src/SignalManager.php:80]
#1  Hyperf\Signal\SignalManager->Hyperf\Signal\{closure}() called at [/data/wwwroot/gidserver/vendor/hyperf/utils/src/Functions.php:271]
#2  call() called at [/data/wwwroot/gidserver/vendor/hyperf/utils/src/Coroutine.php:62]

call(
 [Coroutine-2]
--------------------------------------------------------------------
#0  Swoole\Coroutine\System::waitSignal() called at [/data/wwwroot/gidserver/vendor/hyperf/signal/src/SignalManager.php:80]
#1  Hyperf\Signal\SignalManager->Hyperf\Signal\{closure}() called at [/data/wwwroot/gidserver/vendor/hyperf/utils/src/Functions.php:271]
#2  call() called at [/data/wwwroot/gidserver/vendor/hyperf/utils/src/Coroutine.php:62]

) called at [/data/wwwroot/gidserver/vendor/hyperf/utils/src/Coroutine.php:62]

 [Coroutine-2]
--------------------------------------------------------------------
#0  Swoole\Coroutine\System::waitSignal() called at [/data/wwwroot/gidserver/vendor/hyperf/signal/src/SignalManager.php:80]
#1  Hyperf\Signal\SignalManager->Hyperf\Signal\{closure}() called at [/data/wwwroot/gidserver/vendor/hyperf/utils/src/Functions.php:271]
#2  call() called at [/data/wwwroot/gidserver/vendor/hyperf/utils/src/Coroutine.php:62]
limingxinleo commented 3 years ago

这个无所谓,Swoole 的死锁检测