onWorkerStart
^CWorkerman[start.php] stopping ...
onWorkerStop
PHP Fatal error: Uncaught Swoole\ExitException: swoole exit in /mnt/c/users/twomiao/desktop/workerman/src/Worker.php:1921
Stack trace:
#0 /mnt/c/users/twomiao/desktop/workerman/src/Worker.php(1192): Workerman\Worker::stopAll()
#1 [internal function]: Workerman\Worker::signalHandler()
#2 {main}
thrown in /mnt/c/users/twomiao/desktop/workerman/src/Worker.php on line 1921
worker[none:2878] exit with status 65280
Workerman[start.php] has been stopped
修复worker 进程无法触发信号,导致onWorkerStop() 无法执行。
修复swoole exit() 发生异常:
try { // Ignore Swoole ExitException: Swoole exit. exit($code); } catch(\Exception $e) { }
复现代码:
use Workerman\Events\Swoole; use Workerman\Worker;
require DIR . "/vendor/autoload.php";
Worker::$eventLoopClass = Swoole::class; Worker::$stopTimeout = 15; $worker = new Worker("http://0.0.0.0:8888"); $worker->count = 1; $worker->onMessage = static fn ($connection) => $connection->send("hello world");
$worker->onWorkerStart = static fn (Worker $worker) => print "onWorkerStart\n"; $worker->onWorkerStop = static fn (Worker $worker) => print "onWorkerStop\n"; Worker::runAll();