Maison > développement back-end > tutoriel php > Comment puis-je exécuter des scripts Shell de manière asynchrone en PHP sans bloquer la requête principale ?

Comment puis-je exécuter des scripts Shell de manière asynchrone en PHP sans bloquer la requête principale ?

Linda Hamilton
Libérer: 2024-12-19 02:30:13
original
424 Les gens l'ont consulté

How Can I Execute Shell Scripts Asynchronously in PHP Without Blocking the Main Request?

Exécution Shell asynchrone en PHP : libérer la concurrence

Dans diverses applications PHP, il est nécessaire d'exécuter des scripts Shell de manière asynchrone, sans entraver les performances de la requête principale. La tâche à accomplir consiste à appeler un script shell qui effectue des appels SOAP, ce qui peut prendre du temps. Cependant, le script PHP ne doit pas attendre la fin du processus shell.

Efforts d'exploration

Initialement, des fonctions comme exec() et shell_exec() ont été prises en compte. Cependant, aucun d'entre eux ne fournit le comportement non bloquant souhaité.

Invocation asynchrone à l'aide de l'arrière-plan

Une solution à cette énigme réside dans l'arrière-plan du script shell à l'aide du '& ' opérateur. En ajoutant '&' à la commande exec, le script shell est exécuté en arrière-plan, permettant à la requête PHP de poursuivre son exécution sans entrave.

exec("sh script.sh &");
Copier après la connexion

Redirection des flux de sortie et d'erreurs

Dans certains scénarios, il peut être souhaitable de supprimer à la fois la sortie standard et les flux d'erreurs du script shell. Ceci peut être réalisé en les redirigeant vers /dev/null en utilisant la syntaxe suivante :

exec("sh script.sh & > /dev/null 2> /dev/null");
Copier après la connexion

Alternatives à la redirection

Alternativement, les flux de sortie et d'erreur peuvent être redirigé en une seule opération à l'aide du '>' opérateur suivi de deux esperluettes (&).

exec("sh script.sh & >& /dev/null");
Copier après la connexion

Cette approche offre une solution concise et lisible pour la redirection de flux.

Notes supplémentaires

Il est important de noter que le comportement de l'opérateur « & » peut différer selon les systèmes d'exploitation et les versions de PHP. Il est recommandé de tester la solution dans l'environnement cible spécifique pour un bon fonctionnement.

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