关于PHP平滑启动
可以参考 PHP 重启 php-fpm 的几种方法
信号
- SIGINT、SIGTERM、SIGQUIT:退出Fpm,在master收到退出信号后将向所有的 worker 进程发送退出信号,通知 worker 退出,然后 master 退出
- SIGUSR1: 重新加载日志文件,生产环境中通常会根据时间对日志进行切割,切割后会生成一个新的日志文件,如果进程不重新加载文件,则无法继续写入日志,这时就需要向 master 发送一个 USR1 的信号,告诉 master 重新加载日志文件。
- SIGUSR2: 重启 Fpm,首先 master 也是会向所有的 worker进程发送退出信号,等全部 worker 成功退出后,master 会调用 execvp() 重新启动一个新的 Fpm,最后旧的 master 退出。
其中上面的信号可以省略 SIG,也可以小写。比如:kill -SIGUSR2 pid -> kill -USR2 pid -> kill -usr2 pid
以上选自 PHP7 内核剖析 第 2 章 2.2.4 master-进程管理 (1)信号事件