2009-05-20 130 views
2

相关:see herePHP挂起等待EXEC从wget的+ mysql命令返回结果

我有了这个命令:

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

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

回答

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和更新到另一个PHP文件,你会用exec调用。所以你最终将只有

exec("php NewFile.php > /dev/null 2>&1 &"); 
+0

运行上面的行不会启动wget下载,但不会挂起PHP(这是我想要的)。任何可能无法启动wget命令的原因? – 2009-05-21 21:50:16