Maison > développement back-end > tutoriel php > Comment puis-je fermer une connexion PHP plus tôt après avoir lancé un processus de longue durée via AJAX ?

Comment puis-je fermer une connexion PHP plus tôt après avoir lancé un processus de longue durée via AJAX ?

DDD
Libérer: 2024-12-29 07:06:09
original
371 Les gens l'ont consulté

How Can I Close a PHP Connection Early After Initiating a Long-Running Process via AJAX?

Fermeture anticipée d'une connexion

Cette requête répond au défi de fermer une connexion avant de terminer un script PHP. Le but est de lancer un long processus via AJAX mais de renvoyer une réponse indiquant son début sans attendre la fin du script PHP.

Selon le manuel PHP, mettre fin à une connexion TCP sans terminer le script PHP implique plus de il suffit d'envoyer un en-tête "fermer". La note utilisateur n° 71172 (novembre 2006) fournit une solution complète :

<?php
ob_end_clean();
header("Connection: close");
ignore_user_abort(true);
ob_start();
echo('Text the user will see');
$size = ob_get_length();
header("Content-Length: $size");
ob_end_flush();
flush();
// Do processing here 
sleep(30);
echo('Text user will never see');
?>
Copier après la connexion

Pour que la solution fonctionne, il est crucial de désactiver la mise en mémoire tampon de sortie, de purger la mémoire tampon, puis d'envoyer les informations d'en-tête. Bien que l'envoi d'un en-tête « close » soit nécessaire, il n'est pas suffisant pour fermer la connexion immédiatement.

Les notes utilisateur ultérieures n° 89177 (février 2009) et n° 93441 (septembre 2009) fournissent des informations supplémentaires sur la gestion et la gestion des connexions. aider à clarifier les nuances de la fermeture anticipée de la connexion en PHP.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal