Maison > Article > développement back-end > PHP ne peut pas générer d'analyse de principe chaque seconde en utilisant ob_flush
L'exemple de cet article décrit le principe selon lequel PHP ne peut pas afficher chaque seconde lors de l'utilisation de ob_flush. Partagez-le avec tout le monde pour votre référence. L'analyse spécifique est la suivante :
Fonction d'implémentation :
Le navigateur génère un nombre chaque seconde.
php.ini est configuré comme :
Version 5.3
implicit_flush = off
output_buffering = off
Autre : Vérifiez si output_buffering est activé , vous pouvez :
var_dump(ini_get('output_buffering'));
D'accord, regardons à nouveau ce code :
<?php $i = 3; ob_start(); while ($i--) { echo $i, "<br />"; ob_flush(); flush(); sleep(1); } ob_end_clean(); ?>
Mais pourquoi : ce code ne peut pas être utilisé chaque seconde. Qu'en est-il de la sortie ? ?
Analyse des causes :
Principe de fonctionnement d'Apache : lorsque vous accédez à une adresse (envoi d'une requête), Apache démarre PHP, puis l'exécution de PHP se fait au niveau de la page, c'est-à-dire s'il y a un exécutable code : Une fois tout exécuté, il est lancé vers Apache, et Apache est ensuite lancé vers le navigateur pour afficher les résultats
Comment y parvenir ?
Si la cli affiche les résultats d'une manière différente, quelle est la différence ?
linux cmd:
php5 test.php
Exécuté directement par php sans passer par apache ou service web, vous pouvez réaliser :
<?php $i = 3; while ($i--) { echo $i, "\n"; sleep(1); } ob_end_clean(); ?>
J'espère que cet article sera utile à la conception de la programmation PHP de chacun.
Pour des articles plus pertinents sur l'analyse du principe de PHP à l'aide de ob_flush, qui ne peut pas afficher toutes les secondes, veuillez faire attention au site Web chinois de PHP !