Maison  >  Article  >  développement back-end  >  PHP ne peut pas générer d'analyse de principe chaque seconde en utilisant ob_flush

PHP ne peut pas générer d'analyse de principe chaque seconde en utilisant ob_flush

高洛峰
高洛峰original
2016-12-22 16:32:341037parcourir

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 !

Déclaration:
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