PHP exec在后台使用&不起作用

Mr.*_*ing 3 php linux command background

我在Ubuntu 13.04上使用此代码,

$cmd = "sleep 20 &> /dev/null &";
exec($cmd, $output);
Run Code Online (Sandbox Code Playgroud)

虽然它实际上在那里坐了20秒并且等待:/通常它在使用&向后台发送进程时工作正常,但在这台机器上php不会这样做:/
什么可能导致这个?

Gre*_*ver 8

尝试

<?PHP
$cmd = '/bin/sleep';
$args = array('20');

$pid=pcntl_fork();
if($pid==0)
{
  posix_setsid();
  pcntl_exec($cmd,$args,$_ENV);
  // child becomes the standalone detached process
}

echo "DONE\n";
Run Code Online (Sandbox Code Playgroud)

我测试了它的工作原理.在这里,您首先分叉php进程,然后完成任务.

或者,如果pcntl模块不可用,请使用:

<?PHP

$cmd = "sleep 20 &> /dev/null &";
exec('/bin/bash -c "' . addslashes($cmd) . '"');
Run Code Online (Sandbox Code Playgroud)