从PHP启动守护进程

Tha*_*e90 10 php daemon zombie-process

对于网站,我需要能够启动和停止守护进程.我目前正在做的是

exec("sudo /etc/init.d/daemonToStart start");
Run Code Online (Sandbox Code Playgroud)

守护进程已启动,但Apache/PHP挂起.做一个ps aux透露sudo自己变成了一个僵尸进程,有效地杀死了所有进一步的进展.尝试从PHP启动一个daeomon时这是正常的行为吗?

是的,Apache有权执行该/etc/init.d/daemonToStart命令.我修改了/ etc/sudoers文件以允许它这样做.不,我不允许Apache能够执行任何类型的命令,只有少数几个允许网站工作.

无论如何,回到我的问题,有没有办法允许PHP以不创建僵尸进程的方式启动守护进程?我问这个是因为当我反向操作时,停止已经启动的守护进程,效果很好.

Dav*_*dom 11

尝试附加> /dev/null 2>&1 &命令.

所以这:

exec("sudo /etc/init.d/daemonToStart > /dev/null 2>&1 &");
Run Code Online (Sandbox Code Playgroud)

以防您想知道它的作用/原因:

  • > /dev/null - 将STDOUT重定向到/ dev/null(换言之,黑洞)
  • 2>&1 - 将STDERR重定向到STDOUT(黑洞也是如此)
  • & 分离过程并在后台运行