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 に答える