0

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

2019-03-20 提问
1 个回答
0

说下我的方法,Process启动时保存PID到文件并注册信号SIGUSR1,通过发送SIGUSR1信号给该PID来实现Reload。

Swoole\Process::signal(SIGUSR1, function() use ($process) {
    // ... 一些清理工作
    // 然后退出进程,Manger会重新创建该进程
    $process->exit(0);
});

但这要求自定义进程中执行的代码必须是异步非阻塞的

撰写答案

推广链接