PHPは、wgetの+ mysqlコマンドからの結果を返すようにexecのを待ってハング

StackOverflow https://stackoverflow.com/questions/890083

  •  23-08-2019
  •  | 
  •  

質問

関連:ここをご覧ください。

私は、このコマンドを持ってます:

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

どのようにしてバックグラウンドにダウンロードを送信するために上記の最初の行を変更することについては行くのですか?

役に立ちましたか?

解決

あなたは、あなたが使う&バックグラウンドにプロセスを送信するために、あなたはすべての出力をリダイレクトすることを確認する必要があります。だから、あなたが追加する必要があります。

> /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("php NewFile.php > /dev/null 2>&1 &"); 
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top