Frage

Siehe auch: sehen hier

Ich habe diesen Befehl bekam:

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

Der obige Befehl funktioniert gut, aber PHP wartet auf das Video, bevor Sie mit dem nächsten Download Download zu beenden. Die folgende Zeile sendet jedoch den Download auf den Hintergrund, das ist, was ich versuche, aus der vorherige Zeile zu erreichen.

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

Wie kann ich mich über die erste Zeile über die Änderung den Download auf den Hintergrund zu schicken?

War es hilfreich?

Lösung

Sie müssen Sie machen verwenden und die den Prozess in den Hintergrund zu schicken, und dass Sie die gesamte Ausgabe umleiten. So müssen Sie fügen

> /dev/null 2>&1 & 

am Ende des Befehls. So sollten Sie mit etwas am Ende wie folgt:

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 &");

[Bearbeiten]

Um Sache einfacher zu machen, können Sie auch die wget bewegen und das Update auf eine andere PHP-Datei, die Sie mit exec nennen würde. Also würden Sie nur am Ende

exec("php NewFile.php > /dev/null 2>&1 &"); 
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top