在之前的Swoole版本中中,Swoole会自动在脚本末尾检测是否有Event::wait()调用,如果没有,底层会自动调用register_shutdown_function在脚本结束时调用Event::wait(),进入事件循环。在新的版本中,不再自动添加 Event::wait() 到PHP的shutdown function列表
go(function () {
Co::sleep(1);
echo "done\n";
});
解决办法1:在程序末尾手工添加Event::wait()
go(function () {
Co::sleep(1);
echo "done\n";
});
Swoole\Event::wait();
解决办法2:使用Coroutine\Scheduler作为程序的入口
$scheduler = new Swoole\Coroutine\Scheduler;
$scheduler->add(function () {
Co::sleep(1);
echo "Done.\n";
});
$scheduler->start();