Erreur PHP: ob_flush () [ref.outcontrol]: échec du vidage du tampon. Pas de tampon à vider
Quelqu'un pourrait s'il vous plaît enregistrer ces 2 fichiers et de les exécuter et de me dire pourquoi j'ai l'erreur " ob_flush() [réf.outcontrol]: n'a pas pu vider la mémoire tampon. Pas de tampon à chasse d'eau". J'ai essayé de googler autour et il dit que je dois utiliser ob_start(); mais quand je le fais, alors il n'a pas l'impression ligne par ligne, mais renvoie l'ensemble de l'objet de la boucle quand il a terminé. Je suis un peu nouveau pour PHP donc je ne sais pas où d'autre à regarder..
test_process.php
//This script will write numbers from 1 to 100 into file
//And sends continuously info to user
$fp = fopen( '/tmp/output.txt', 'w') or die('Failed to open');
set_time_limit( 120);
ignore_user_abort(true);
for( $i = 0; $i < 100; $i++){
echo "<script type=\"text/javascript\">parent.document.getElementById( 'foo').innerHTML += 'Line $i<br />';</script>";
echo str_repeat( ' ', 2048);
flush();
ob_flush();
sleep(1);
fwrite( $fp, "$i\n");
}
fclose( $fp);
main.html
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript" charset="utf-8"></script>
<style type="text/css" media="screen">
.msg{ background:#aaa;padding:.2em; border-bottom:1px #000 solid}
.new{ background-color:#3B9957;}
.error{ background-color:#992E36;}
</style>
</head>
<body>
<iframe id="loadarea" width="1024px" height="768px"></iframe><br />
<script>
function helper() {
document.getElementById('loadarea').src = 'test_process.php';
}
function kill() {
document.getElementById('loadarea').src = '';
}
</script>
<input type="button" onclick="helper()" value="Start">
<input type="button" onclick="kill()" value="Stop">
<div id="foo"></div>
</body>
</html>
source d'informationauteur ThreaT
Vous devez vous connecter pour publier un commentaire.
Je pense que vous confondez
ob_flush()
avecflush()
. Alors queob_start()
etob_flush()
gère un interne à PHP tampon de sortie des captures de toutes les sorties,flush()
est la fonction normale que les bouffées de chaleurSTDOUT
comme dans d'autres langages de programmation.Exemple:
EDIT:
Votre sortie n'est pas imprimé, parce que votre serveur peut mettre en mémoire tampon le contenu. Essayez de désactiver la compression et le tampon de sortie:
Veuillez également garder à l'esprit, que Safari et Internet Explorer interne 1K de mémoire tampon. Donc, vous avez besoin pour ajouter 1 KO de données de remplissage (comme les espaces), à rendre à rendre.
EDIT 2:
Votre application est cassé. Vous souhaitez interroger vos données avec l'ajax. Utilisation de jQuery sur le côté client:
Puis dans
script-that-returns-stuff.php
:Vous seulement besoin
ob_flush()
si la mémoire tampon de sortie est active (par exemple parob_start()
ou par les paramètres de configuration). Si vous ne l'avez pas, il suffit de retirer leob_flush()
. Ou vous pouvez le faire à cette condition:Où est ob_start()?
ob_flush vide le tampon de sortie à votre descripteur de fichier. Peut-être que vous avez tort.
Un exemple:
manuel