2

相关:看这里

我有这个命令:

exec("(wget  -O http://domain/file.zip && mysql -u user -ppassword database -e \"UPDATE \\`table\\` SET \\`status\\` = 'live' WHERE \\`id\\` = '1234'\") & echo \$!");

上面的命令可以正常工作,但是 PHP 会等待视频完成下载,然后再进行下一次下载。然而,下一行将下载发送到后台,这是我试图从上一行中实现的。

exec("wget -O http://domain/file.zip &>/dev/null & echo \$!");

如何更改上面的第一行以将下载发送到后台?

4

1 回答 1

2

您必须让您使用 & 将进程发送到后台并重定向所有输出。所以你需要添加

> /dev/null 2>&1 & 

在您的命令结束时。所以你应该得到这样的结果:

exec("(wget  -O http://domain/file.zip && mysql -u user -ppassword database -e \"UPDATE \\`table\\` SET \\`status\\` = 'live' WHERE \\`id\\` = '1234'\") echo \$! > /dev/null 2>&1 &");

[编辑]

为了使事情更简单,您还可以将 wget 和更新移动到另一个您将使用 exec 调用的 php 文件中。所以你最终只会

exec("php NewFile.php > /dev/null 2>&1 &"); 
于 2009-05-20T20:43:24.630 回答