daemonize
守护进程化。设置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
程序与该管理进程失去父子进程关系。