Maison >développement back-end >tutoriel php >Comment puis-je maintenir l'exécution de PHP après avoir envoyé la réponse HTTP au client ?

Comment puis-je maintenir l'exécution de PHP après avoir envoyé la réponse HTTP au client ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-15 04:17:02809parcourir

How can I keep PHP execution alive after sending the HTTP response to the client?

Maintenir l'exécution de PHP active après la réponse HTTP

Dans les environnements où PHP s'exécute en tant que mod_php d'Apache, un défi courant se pose dans le maintien de l'exécution de PHP après envoyer une réponse HTTP au client. Cette contrainte provient de la nécessité de signaler les messages d'erreur à une application dans un délai d'attente précis.

Pour résoudre ce problème, la clé réside dans l'envoi de la réponse HTTP le plus tôt possible sans interrompre les opérations en cours. Une méthode efficace consiste à utiliser l'extrait de code suivant :

ob_end_clean();
header("Connection: close");
ignore_user_abort(); // optional
ob_start();
echo ('Text the user will see');
$size = ob_get_length();
header("Content-Length: $size");
ob_end_flush();
flush();
session_write_close(); // Added per suggestion
// Do processing here
sleep(30);
echo('Text user will never see');

Cet extrait vide initialement toute sortie en attente et configure la connexion HTTP pour qu'elle se ferme. En ignorant les tentatives d'abandon initiées par l'utilisateur et en spécifiant la longueur du contenu, la réponse HTTP est efficacement distribuée. Par la suite, des traitements en cours peuvent être exécutés, tels que des opérations de base de données ou l'envoi d'e-mails.

En employant cette méthode, PHP peut envoyer une réponse HTTP complète au client et poursuivre l'exécution pendant une période de temps spécifiée, résolvant ainsi efficacement le problème. des limitations de rapport d'erreurs imposées par les applications externes. Cette approche est particulièrement utile dans les scénarios où des opérations fastidieuses doivent être effectuées sans dépasser les délais d'attente prédéterminés.

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