我有这个运行良好的 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
最后没有&符号时会出现?我觉得这可能预示着什么,但不知道是什么。
编辑:
因为这不断作为答案出现,所以我也尝试过:
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");