Maison >développement back-end >tutoriel php >Comment puis-je maintenir l'exécution de PHP après l'envoi d'une réponse HTTP ?

Comment puis-je maintenir l'exécution de PHP après l'envoi d'une réponse HTTP ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-12 13:10:02682parcourir

How Can I Keep PHP Execution Running After Sending an HTTP Response?

Poursuite de l'exécution de PHP après une réponse HTTP avec mod_php

Pour surmonter le problème de l'exécution de PHP interrompue par une application appelante en raison d'un délai d'attente avant le script peut effectuer des opérations essentielles, on peut exploiter des techniques spécifiques au sein du script PHP lui-même.

La méthode Response-Abort-Resume

L'extrait de code fourni utilise les éléments suivants approche :

  1. Effacez le tampon de sortie et définissez l'en-tête "Connection: close" pour terminer la réponse HTTP.
  2. Activez "ignore_user_abort" pour empêcher l'exécution de PHP d'être interrompue par le client .
  3. Démarrez un nouveau tampon de sortie.
  4. Faites écho du message souhaité au navigateur.
  5. Obtenez la taille du tampon de sortie et ajoutez un en-tête "Content-Length" à informer le navigateur de la taille de la réponse.
  6. Videz les deux tampons de sortie pour envoyer la réponse au client.
  7. Fermez la session pour libérer les ressources détenues par PHP.
  8. Effectuez des traitement et opérations dans le script modifié.

Détails d'implémentation

Il est essentiel de noter que les fonctions "ob_end_flush()" et "flush()" doivent être appelés dans l’ordre pour que la réponse soit transmise au client. De plus, certains utilisateurs ont signalé de meilleurs résultats en ajoutant « session_write_close() » pour fermer les ressources de gestion de session PHP.

En implémentant cette méthode, les scripts PHP peuvent rapidement envoyer une réponse HTTP à une application en attente et continuer à exécuter des opérations importantes. sans faire face à des problèmes de résiliation prématurée.

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