【问题标题】:Problem starting a PHP background process启动 PHP 后台进程的问题
【发布时间】:2011-01-11 05:35:31
【问题描述】:

我最近创建了一个需要在后台运行的脚本。我使用此代码来运行它...

function run_in_background($Command, $Priority = 0) {
   if($Priority)
       $PID = exec("nohup nice -n $Priority $Command 2> /dev/null & echo $!");
   else
       $PID = exec("nohup $Command 2> /dev/null & echo $!");
   return($PID);
}

并像这样使用它

run_in_background('curl http://www.mydomain.com/mypage.php',5);

很遗憾,它没有在后台运行...

我也用过:

shell_exec

而不是

exec

但是还是不行。。是我的设置有问题吗?。

注意:它不会在后台运行,但它肯定会在页面加载时运行...

先谢谢了..

【问题讨论】:

  • 请谨慎使用此功能,并清楚记录如何正确使用。如果用户可以控制 $Command 或 $Priority 的值,那么您就有了命令注入漏洞。攻击者将能够以与运行 php 相同的权限在您的 Web 服务器操作系统上执行命令。

标签: php process background


【解决方案1】:

在您的命令末尾放置一个& 以告诉外壳程序在后台运行该进程。

$PID = exec("nohup nice -n $Priority $Command 2> /dev/null & echo $! &");

我还询问并回答了一个类似的问题,您可以查看可能对您有所帮助:How can I run a PHP script in the background after a form is submitted?

【讨论】:

    【解决方案2】:

    请看这个答案,似乎正是你要找的:

    php execute a background process

    【讨论】:

      猜你喜欢
      • 2013-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-12
      • 2011-01-05
      • 1970-01-01
      相关资源
      最近更新 更多