PHP挂起等待exec从wget + mysql命令返回结果

时间:2009-05-20 20:31:39

标签: php mysql exec wget

相关:see here

我有这个命令:

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 \$!");

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

1 个答案:

答案 0 :(得分: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 &");