PHP exécute des scripts fastidieux et génère du contenu en temps réel

藏色散人
Libérer: 2023-04-07 17:46:02
avant
1940 Les gens l'ont consulté

Nous avons parfois une telle exigence. Lors de l'exécution d'un script qui prend du temps, les données ne seront sorties qu'après l'exécution du script. S'il n'est pas traité, il mettra en cache le contenu de la page dans la mémoire jusqu'à ce qu'il soit mis en cache. est traité. Il sera exécuté plus tard. Ici, nous avons besoin d'une sortie en temps réel.

flush — Vide le tampon de sortie

Vide le tampon du programme PHP quel que soit le contexte dans lequel PHP est exécuté (CGI, serveur web, etc.). Cette fonction envoie toutes les sorties du programme jusqu'à présent au navigateur de l'utilisateur. La fonction

flush() n'a aucun effet sur le mode cache du serveur ou du navigateur client. Par conséquent, les fonctions ob_flush() et flush() doivent être utilisées pour vider le tampon de sortie.

Certains programmes de serveur web, notamment ceux sous Win32, mettront toujours en cache la sortie du script jusqu'à la fin du programme avant d'envoyer les résultats au navigateur.

Certains modules Apache, tels que mod_gzip, peuvent mettre en cache leur propre sortie, ce qui empêchera les résultats générés par la fonction flush() d'être envoyés immédiatement au navigateur client.

Même le navigateur mettra en cache le contenu reçu avant de l'afficher. Par exemple, le navigateur Netscape met le contenu en cache jusqu'à ce qu'il reçoive un saut de ligne ou le début d'une balise HTML, et n'affiche pas l'intégralité du tableau tant qu'il n'a pas reçu une balise .

Certaines versions de Microsoft Internet Explorer ne commenceront à afficher la page qu'après avoir reçu 256 octets, donc des espaces supplémentaires doivent être envoyés pour permettre à ces navigateurs d'afficher le contenu de la page.

Si une sortie en temps réel est requise, deux fonctions principales ob_flush, flush;

<?php
 // echo phpinfo();
if (ob_get_level() == 0) ob_start();
for ($i = 0; $i<10; $i++){
    echo "<br> Line to show.";
    echo str_pad(&#39;&#39;,4096)."\n";
    ob_flush();
    flush();
    sleep(2);
}
echo "Done.";
ob_end_flush();
Copier après la connexion

Recommandé : "Tutoriel vidéo 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!

Étiquettes associées:
php
source:segmentfault.com
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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!