我有这个 exec 命令运行得很好,但没有释放浏览器(即存在 php 超时问题,但实际命令继续运行):
exec("/usr/local/php53/bin/php csv.php $file $user > /dev/null");
当我跑步时ps auxw
我看到这两个正在运行的进程:
sh -c /usr/local/php53/bin/php csv.php /tmp/php9Pwu9e 294 >
/usr/local/php53/bin/php csv.php /tmp/php9Pwu9e 294
但是,当我运行下面的代码时,浏览器立即空闲,但命令不会继续运行:
exec("/usr/local/php53/bin/php csv.php $file $user > /dev/null &");
当我跑步时ps auxw
我看到一个正在运行的进程在 16 秒后终止(并且似乎很快耗尽内存并使用大量 CPU%):
/usr/local/php53/bin/php csv.php /tmp/php9Pwu9e 294
然后进程就终止了,而实际上并没有做任何事情。不确定 & 符号正在做什么会导致这种情况。
还有为什么sh -c
当末尾没有&符号时出现?我觉得这可能表明了一些事情,但不知道是什么。
EDIT:
因为这个答案不断出现,
我也尝试过:
exec("/usr/local/php53/bin/php csv.php $file $user > /dev/null 2>&1 &");
这说明了与上面提到的相同的问题。
下面的代码确实可以运行,但不会释放浏览器。
exec("usr/local/php53/bin/php csv.php $file $user > /dev/null 2>&1");