Comment effectuer une exécution de shell asynchrone en PHP
L'exécution de scripts shell à partir de PHP peut souvent entraîner des problèmes de performances en raison de leur nature fastidieuse . Pour atténuer ce problème, il est souhaitable d'exécuter des scripts shell dans un processus en arrière-plan, sans bloquer le script PHP.
Une solution simple consiste à utiliser le symbole esperluette (&) après l'invocation de exec. L'opérateur "&" exécute le processus en arrière-plan, permettant au script PHP de poursuivre son exécution sans attendre la fin du script shell.
Par exemple, la commande suivante envoie un script shell à exécuter en arrière-plan :
exec("shell_script.sh &");
Pour éviter l'accumulation de messages de sortie et d'erreur dans l'environnement PHP, il est recommandé de rediriger à la fois la sortie standard et l'erreur standard vers /dev/null en utilisant ce qui suit command :
exec("shell_script.sh > /dev/null 2>/dev/null &");
Alternativement, une seule esperluette peut rediriger simultanément stdio et stderr vers /dev/null.
exec("shell_script.sh &> /dev/null &");
En employant ces techniques, vous pouvez exécuter des scripts shell de manière asynchrone dans PHP, permettant à vos scripts PHP de rester réactifs pendant les opérations shell chronophages.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!