Maison >développement back-end >tutoriel php >Comment exécuter des commandes PHP de manière asynchrone sans blocage ?

Comment exécuter des commandes PHP de manière asynchrone sans blocage ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-09 12:00:25495parcourir

How to Run PHP Commands Asynchronously Without Blocking?

Comment exécuter des commandes PHP sans attendre les résultats

En PHP, la commande exec peut exécuter des commandes externes, mais par défaut, PHP attend pour que la commande se termine avant de continuer. Cependant, dans certains scénarios, il est souhaitable de lancer une commande et de poursuivre d'autres tâches sans attendre les résultats.

Solution :

La documentation PHP propose une solution pour exécuter des commandes sans bloquer :

// Redirect stdout and stderr to /dev/null to suppress output
exec('run_baby_run > /dev/null 2>&1 &');

Cette commande :

  1. Exécute le Commande run_baby_run.
  2. Redirige sa sortie standard et son erreur standard vers /dev/null, supprimant toute sortie de la commande.
  3. Arrière-plan de la commande, créant un processus distinct qui s'exécute indépendamment du script PHP. .

Solution alternative pour détacher le Processus :

Pour détacher le processus du thread Apache et garantir qu'il continue de s'exécuter même si le script PHP se termine, utilisez cette commande :

exec('bash -c "exec nohup setsid your_command > /dev/null 2>&1 &"');

Cette commande :

  1. Lance une session bash.
  2. Exécute nohup pour empêcher le processus de se terminer si le script appelant quitte.
  3. Définit un nouvel ID de session (setsid) pour détacher le processus de celui en cours.
  4. Supprime la sortie comme avant.

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