daemonize
最后更新于:2022-04-02 06:21:56
# daemonize
[TOC]
守护进程化。设置`daemonize => 1`时,程序将转入后台作为守护进程运行。长时间运行的服务器端程序必须启用此项。
如果不启用守护进程,当ssh终端退出后,程序将被终止运行。
* 启用守护进程后,标准输入和输出会被重定向到`log_file`
* 如果未设置`log_file`,将重定向到`/dev/null`,所有打印屏幕的信息都会被丢弃
* 启用守护进程后,`CWD`(当前目录)环境变量的值会发生变更,相对路径的文件读写会出错。PHP程序中必须使用绝对路径
## systemd
使用`systemd`管理`Swoole`服务时,请勿设置`daemonize = 1`。主要原因是`systemd`的机制与`init`不同。`init`进程的`PID`为`1`,程序使用`daemonize`后,会脱离终端,最终被`init`进程托管,与`init`关系变为父子进程关系。
但`systemd`是启动了一个单独的后台进程,自行`fork`管理其他服务进程,因此不需要`daemonize`,反而使用了`daemonize = 1`会使得`Swoole`程序与该管理进程失去父子进程关系。
';