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'); ?>
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!