PHP: Fermer la connexion avec le navigateur

L’exécution de scripts PHP peut parfois prendre quelques secondes… Seulement, vous avez afficher toutes les informations concernant la page en quelques dixaines de milisecondes mais maintenant, vous éffectuez des opérations diverses, qui, elles, prennent du temps. La navigateur va toujours afficher sur la page “Page en chargement…” ou quelque chose comme ça car comme la connexion avec PHP n’as pas étée fermée, il peut toujours y avoir du code à arriver ! Seulement, on peut, d’une façon très résumée dire au navigateur du visiteur que plus rien ne va lui être envoyer…

Le principe

Cette technique est très simple :

  1. On temporise la sortie (ob_start)
  2. Quand on as toute la page (complète) prête à être envoyée au navigateur, on détermine la taille du tampon (ob_get_length)
  3. On envoi au navigateur cette valeur
  4. On envoi le tampon au navigateur

A partir de là, on peut mettre autant de temps à traiter que l’on veux, il n’y a aucun problème, tout sera éxécuté (à condition d’avoir bien précisé que l’on ne veux pas arrêter le script si le visiteur annule le chargement complet de la page).

Le code

Voici le code PHP commenté mettant en pratique ceci :

Vous pouvez tester ceci sur cette page :
http://www.sroze.io/uploads/header_close.php
Dont le code source est ici :
http://www.sroze.io/uploads/header_close.source

Bonne prog’

facebooktwittergoogle_plusredditpinterestlinkedinmail

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">