Maison > développement back-end > tutoriel php > Comment exécuter des commandes Shell simultanément en PHP sans blocage ?

Comment exécuter des commandes Shell simultanément en PHP sans blocage ?

Susan Sarandon
Libérer: 2024-12-02 14:19:12
original
453 Les gens l'ont consulté

How to Execute Shell Commands Concurrently in PHP without Blocking?

Exécution simultanée de commandes Shell sans blocage

De nombreuses applications nécessitent l'exécution de tâches gourmandes en calcul en arrière-plan, en particulier lors de la gestion des interactions utilisateur. En PHP, la fonction shell_exec est couramment utilisée à cet effet. Cependant, cela peut être problématique lorsque la tâche prend beaucoup de temps, car elle bloque le flux d’exécution du script PHP. Existe-t-il un moyen d'exécuter une commande shell sans attendre qu'elle se termine ?

Exécution simultanée avec redirection

Oui, il est possible d'exécuter une commande shell simultanément sans bloquer le script PHP. Ceci peut être réalisé en redirigeant les flux de sortie et d'erreur de la commande vers null. Voici comment procéder :

shell_exec('php measurePerformance.php 47 844 [email protected] > /dev/null 2> /dev/null &');
Copier après la connexion

Le symbole & à la fin de la commande indique au shell d'exécuter la commande en arrière-plan. Le > /dev/null et 2> Les redirections /dev/null suppriment les flux de sortie standard et d'erreur standard, réduisant ainsi au silence toute sortie de la commande.

Avantages de l'exécution simultanée

L'exécution simultanée de commandes offre plusieurs avantages :

  • Empêche le script PHP d'être bloqué par le script de longue durée tâche.
  • Permet aux interactions des utilisateurs et à d'autres tâches de se poursuivre sans interruption.
  • Évite les problèmes potentiels d'expiration ou d'épuisement de la mémoire causés par une exécution prolongée.

Remarque : La redirection des flux stdout et stderr vers /dev/null signifie que vous ne pourrez accéder à aucune sortie ou messages d'erreur de la commande. Si vous avez besoin de les capturer, utilisez des méthodes alternatives telles que la surveillance des canalisations ou des processus.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal