Maison >développement back-end >tutoriel php >Comment puis-je exécuter des commandes Shell de manière asynchrone en PHP ?

Comment puis-je exécuter des commandes Shell de manière asynchrone en PHP ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-01 15:27:11504parcourir

How Can I Run Shell Commands Asynchronously in PHP?

Exécuter des commandes Shell en arrière-plan avec PHP

Lors de l'exécution d'une tâche gourmande en processus, comme l'exécution d'un script shell, il est souvent souhaitable de terminer la tâche en arrière-plan. Cela permet à l'utilisateur de continuer à utiliser le site Web ou l'application sans avoir à attendre la fin de la tâche.

Utilisation de shell_exec()

La fonction shell_exec() de PHP exécute un commande shell et renvoie sa sortie. Cependant, shell_exec() nécessite que le script attende la fin de la commande avant de continuer.

Exécuter des commandes en arrière-plan

Pour exécuter une commande shell en arrière-plan sans en attendant qu'il soit terminé, utilisez le code suivant :

shell_exec('php measurePerformance.php 47 844 [email protected] > /dev/null 2>/dev/null &');

Ce code ajoute les paramètres suivants à la fin du shell_exec() commande :

  • > /dev/null 2>/dev/null : redirige la sortie standard et la sortie d'erreur de la commande vers /dev/null, les supprimant ainsi.
  • & : exécute la commande en arrière-plan, permettant au script de continuer sans en attendant la fin de la commande.

Remarque : Cette méthode ne renvoie pas le message de la commande sortie ou code d’état. Si vous avez besoin d'accéder aux résultats de la commande, envisagez d'utiliser une approche différente, par exemple en utilisant exec() avec la commande nohup ou en créant un processus dédié pour la tâche en arrière-plan.

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!

Déclaration:
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