php5在后台进行系统调用

php5在后台进行系统调用,php,system,Php,System,我试图在Linux下从php5脚本创建一个tarball,但我并不真正关心输出;到目前为止,我发现的方法是 system("tar czf tarball.tgz directory/path &"); <pre><?php exec("bash dodate 2>&1 /dev/null &"); system("echo done at \$(date)"); ?></pre> 不过,我想介绍一下这个过程的背景 检查它

我试图在Linux下从php5脚本创建一个tarball,但我并不真正关心输出;到目前为止,我发现的方法是

system("tar czf tarball.tgz directory/path &");
<pre><?php

exec("bash dodate 2>&1 /dev/null &");
system("echo done at \$(date)");

?></pre>
不过,我想介绍一下这个过程的背景

检查它会提到必须将输出重定向到文件

然而

system("tar czf tarball.tgz directory/path > /dev/null 2>&1");
没用。
system()
函数不接受文件描述符。。。我错过了什么

使用以下各项进行测试:

脚本
test.php

我进入浏览器并调用/刷新页面;打印/更新“完成”消息确实需要5秒钟

谢谢

您在php中“没有”线程。您可以做的一个技巧是对另一个php执行curl请求,该php执行您想要的操作。您需要确保您的curl很快超时,并且当到它的http连接被curl超时关闭时,另一个php不会死掉


您也可以在此处阅读有关主题的内容:或者

在您的第一段代码末尾的
&
应该使其在后台运行,不是吗?您是否需要将输出/结果报告给PHP程序,还是可以在不知道的情况下继续执行?如果您不关心输出,
exec()
可能是一个更好的选择:唉,符号并没有为过程设置背景。。。具体来说,我通过创建一个脚本“dodate”来测试这一点,该脚本的内容
sleep5;日期
,然后调用
系统(“bash-dodate&”),但它会等待,然后打印输出。。。!与exec的效果相同
sleep 5
date