使用示例:服务器
$atomic = new Swoole\Atomic(); $serv = new Swoole\Server('127.0.0.1', '9501'); $serv->set([ 'worker_num' => 1, 'log_file' => '/dev/null' ]); // 主进程启动时触发,与管理进程并行启动 $serv->on("start", function ($serv) use ($atomic) { if ($atomic->add() == 2) { $serv->shutdown(); } }); // 管理进程启动时触发,与主进程并行启动 $serv->on("ManagerStart", function ($serv) use ($atomic) { if ($atomic->add() == 2) { $serv->shutdown(); } }); // 管理进程结束时触发,这时 Task 和 Worker 进程已结束运行,已被 Manager 进程回收 $serv->on("ManagerStop", function ($serv) { echo "shutdown\n"; }); $serv->on("Receive", function () { }); $serv->start();
服务器启动成功后,
onStart/onManagerStart/onWorkerStart
会在不一样的进程内并发执行。并发
onStart/onManagerStart/onWorkerStart
3 个事件的执行顺序是不肯定的。atom