Comment envoyer des réponses HTTP en PHP et poursuivre l'exécution de processus de longue durée ?

Mary-Kate Olsen
Libérer: 2024-11-16 12:30:03
original
268 Les gens l'ont consulté

How to Send HTTP Responses in PHP and Continue Execution for Long-Running Processes?

Envoi de réponses HTTP en PHP et poursuite de l'exécution

Face à des opérations chronophages qui dépassent les délais d'attente des applications Web, les développeurs recherchent souvent des solutions pour poursuivre l'exécution de PHP au-delà du protocole HTTP. livraison de la réponse. Dans ce cas particulier, le défi est de permettre à PHP de transmettre rapidement une réponse HTTP complète tout en lançant et en complétant simultanément le traitement de la base de données et du courrier électronique dans un délai prescrit d'une minute.

La méthode la plus simple consiste à utiliser ob_end_flush( ) et flush() fonctionne de manière stratégique. En mettant fin au processus de mise en mémoire tampon de sortie et en libérant les en-têtes HTTP à côté du texte visible par l'utilisateur, le script signale efficacement l'achèvement de la réponse au client.

Voici un exemple d'extrait de code qui illustre cette approche :

ob_end_clean();
header("Connection: close");
ignore_user_abort(); // Disable abort
ob_start();
echo ('Success message for the user');
$size = ob_get_length();
header("Content-Length: $size");
ob_end_flush(); // Flush the initial content
flush();            // Ensure proper flushing
session_write_close(); 
// Delegate time-consuming tasks here
sleep(30);
echo('Tasks completed after 30 seconds');
Copier après la connexion

Avec cette approche, le script informe le client d'une opération réussie et lance des tâches fastidieuses ultérieures sans provoquer l'expiration du délai d'attente de l'application.

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