【问题标题】:Using nohup or setsid in PHP as Fast CGI在 PHP 中使用 nohup 或 setsid 作为快速 CGI
【发布时间】:2011-04-18 11:09:07
【问题描述】:

我正在尝试执行一个可能很长的后台进程来响应传入的 AJAX 请求,但是通过 shell_exec 使用 nohupsetsid 会导致服务器分叉炸弹。我们使用suexec 和 FastCGI,当它被轰炸时,整个服务器都陷入了爬行。

shell_exec("nohup /home/me/myscript.php");

脚本现在没有做任何冗长的事情,只是输出到一个不存在的文件(这永远不会发生,因为它首先会爆炸)

谢谢!

【问题讨论】:

  • 您绝对应该询问 serverfault,那里有更多专家。但有一件事:作为预防措施,您应该在脚本之前 nohup php 解释器 (nohup /usr/bin/php /home/../script.php)。这些实用程序在 shebang 脚本上效果不佳。

标签: php shell fork command-line-interface


【解决方案1】:

我一直在http://php.net/manual/en/intro.pcntl.php 看到警告(尽管您使用的是nohup,我知道)作为警告,从网络服务器进程分叉不是一种安全的方法。如果需要启动后台进程,我将创建一个守护进程/始终运行的作业进程,它可以接收此类请求(并且与网络服务器没有任何关系),它可以随意分叉/nohups。

【讨论】:

    猜你喜欢
    • 2015-08-01
    • 1970-01-01
    • 2011-08-08
    • 2021-01-07
    • 1970-01-01
    • 1970-01-01
    • 2014-02-18
    • 2018-10-11
    • 2013-08-26
    相关资源
    最近更新 更多