猿问

在swoole的Web Server中添加了自定义进程,如何可以优雅的重启该自定义进程

使用swoole的addprocess创建了一个自定义的进程,一切运行也都正常,现在就是想知道在不重启整个服务的情况下,如何单独重启该自定义的进程,做到代码更新了,重启一下该进程服务就好了,类似热更新。因为reload只能重启worker和task进程,如果每次都需要重启整个服务,那实在是太麻烦了,所以麻烦看看这个问题在swoole中能否解决?

慕姐8265434
浏览 624回答 1
1回答

隔江千里

说下我的方法,Process启动时保存PID到文件并注册信号SIGUSR1,通过发送SIGUSR1信号给该PID来实现Reload。Swoole\Process::signal(SIGUSR1, function() use ($process) {    // ... 一些清理工作     // 然后退出进程,Manger会重新创建该进程     $process->exit(0); });但这要求自定义进程中执行的代码必须是异步非阻塞的。
随时随地看视频慕课网APP
我要回答