PHP se bloque en attendant exec pour retourner des résultats de wget + commande mysql

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

  •  23-08-2019
  •  | 
  •  

Question

Related: voir

J'ai cette commande:

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

La commande ci-dessus fonctionne très bien, mais attend PHP pour la vidéo pour terminer le téléchargement avant de passer au prochain téléchargement. La ligne suivante, cependant, envoie le téléchargement en arrière-plan, ce qui est ce que je suis en train de réaliser à partir de la ligne précédente.

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

Comment puis-je de changer la première ligne ci-dessus pour envoyer le téléchargement en arrière-plan?

Était-ce utile?

La solution

Vous devez vous faire utiliser et d'envoyer le processus à l'arrière-plan et que vous redirigez toutes les sorties. Donc, vous devez ajouter

> /dev/null 2>&1 & 

à la fin de votre commande. Donc, vous devriez vous retrouver avec quelque chose comme ceci:

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

[Modifier]

Pour rendre les choses plus simples, vous pouvez également déplacer le wget et la mise à jour à un autre fichier php que vous appelez avec exec. Donc, vous finiriez avec seulement

exec("php NewFile.php > /dev/null 2>&1 &"); 
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top