Cet article présente principalement le principe selon lequel PHP ne peut pas produire chaque seconde lors de l'utilisation de ob_flush. Il analyse également en détail les principes associés de PHP utilisant ob_flush et la méthode d'utilisation de CLI sous Linux. J'espère que cela aide tout le monde.
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, revenons Regardez 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 émis toutes les secondes ? ?
Analyse des causes :
Principe de fonctionnement d'Apache : lorsque vous accédez à une adresse (envoyez une requête), Apache démarre PHP, puis l'exécution de PHP se fait au niveau de la page, cela c'est-à-dire s'il y a du code exécutable : 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
Il peut être implémenté directement par php sans passer par Apache ou un service web :
<?php $i = 3; while ($i--) { echo $i, "\n"; sleep(1); } ob_end_clean(); ?>
Recommandations associées :
Introduction au cache ob PHP et explication détaillée de la fonction ob
Une brève analyse et compréhension de PHP ob cache
Explication détaillée de l'utilisation de php ob_start
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!