× 警告!旧版文档已经暂停维护,请查看新版文档。点击前往新版文档

daemonize

守护进程化。设置daemonize => 1时,程序将转入后台作为守护进程运行。长时间运行的服务器端程序必须启用此项。

如果不启用守护进程,当ssh终端退出后,程序将被终止运行。

  • 启用守护进程后,标准输入和输出会被重定向到 log_file
  • 如果未设置log_file,将重定向到 /dev/null,所有打印屏幕的信息都会被丢弃
  • 启用守护进程后,CWD(当前目录)环境变量的值会发生变更,相对路径的文件读写会出错。PHP程序中必须使用绝对路径

systemd

使用systemd管理Swoole服务时,请勿设置daemonize = 1。主要原因是systemd的机制与init不同。init进程的PID1,程序使用daemonize后,会脱离终端,最终被init进程托管,与init关系变为父子进程关系。

systemd是启动了一个单独的后台进程,自行fork管理其他服务进程,因此不需要daemonize,反而使用了daemonize = 1会使得Swoole程序与该管理进程失去父子进程关系。


  • 秣马儿

    启用守护进程后,标准输入和输出会被重定向到 log_file

    是标准输出和标准错误会被重定向吧?

  • 3王

    发现一个问题,如果设置了daemonize=>true以后,会有权限上的问题,一定要再设置权限

  • 按时打算大的

    怎么设置呢,开启之后直接退出了

  • Alawn

    swoole 1.8.7在php 7.0.9下,swoole开启websocket服务,开启守护进程或者配置心跳检测后会报错zend_mm_heap corrupted。不知道大伙遇到过没有,有没有什么解决方案

  • 潮起潮落

    设置true之后,执行的环境发生变化了,include文件都错误了

  • 爱Q爱生活

    我也遇到了这个问题,不打开守护进程就没有这个问题,很奇怪

  • 晚安

    daemonize=>true以后,守护进程的默认目录会变成根目录

  • 八咫藤壺_

    设置为 False之后,终端不会显示日志。