Maison >développement back-end >tutoriel php >Comment puis-je exécuter un script PHP de longue durée en arrière-plan après la soumission d'un formulaire ?

Comment puis-je exécuter un script PHP de longue durée en arrière-plan après la soumission d'un formulaire ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-03 02:22:09337parcourir

How Can I Run a Long-Running PHP Script in the Background After a Form Submission?

Comment exécuter un script PHP en arrière-plan après la soumission d'un formulaire

Scénario de problème

Considérez un formulaire qui traite les informations soumises, les insère dans une base de données et envoie des notifications à une liste d'abonnés. Cependant, en raison du nombre d'abonnés (environ 150), le processus prend un temps important (plus d'une minute). Cela entraîne un retard et des problèmes potentiels pour les utilisateurs :

  • Les utilisateurs peuvent soumettre le formulaire à plusieurs reprises, ce qui entraîne des soumissions en double ou des échecs.
  • Les utilisateurs peuvent fermer prématurément la page ou le navigateur, ce qui entraîne le serveur pour continuer à exécuter le script pendant que le navigateur se déconnecte.

Solution : séparation des e-mails Notifications

Pour résoudre ce problème, la partie notification par courrier électronique du script doit être séparée dans un fichier distinct. Cependant, l'exécution de ce fichier en tâche de fond est essentielle pour éliminer le besoin d'interaction de l'utilisateur.

Exécuter un script PHP en arrière-plan

Pour exécuter un script PHP en tant que service en arrière-plan, un Le processus doit être invoqué en utilisant exec ou shell_exec.

Utiliser shell_exec

L'utilisation de shell_exec permet journalisation du processus de notification. La commande suivante permettra d'obtenir la fonctionnalité souhaitée :

shell_exec("/path/to/php /path/to/send_notifications.php '".$post_id."' 'alert' >> /path/to/alert_log/paging.log &");

Le caractère & à la fin de la commande indique que le processus doit s'exécuter en arrière-plan.

Notes supplémentaires

  • Les variables supplémentaires (entourées de guillemets simples) après le chemin du script sont accessibles via le tableau $_SERVER['argv'] en arrière-plan script.
  • La sortie du script d'arrière-plan est ajoutée à un fichier journal à l'aide du >> opérateur.

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