php echo / print sorunu while döngüsü

5 Cevap php

Ben bunun için bir düzeltme gerekiyor. Burada
benim kod sadece bir parçası

<?php
$number = 30;
while($number > 0) {
 $number--;
 sleep(30);
 print "$number . Posted<br>";

}
?> 

Döngüsünde döngü süreç aslında çok daha büyük olduğunu, ben sadece önemli şeyler koymak.

Anyways as you can see it should print
30 posted
(wait 30 seconds)
29 Posted
(wait 30 seconds)
28 Posted
(wait 30 seconds)

But instead it waits till the loop is over, then just prints it all at once. Is there a fix for this? I was thinking an ajax method, but I dont know of any.

5 Cevap

Herkes nedenini açıkladı güzel.

Bu tarayıcı dışında bir şey 'kızardı' önce varsayılan PHP şeyi işleyecek olmasıdır. Sadece her satırı yazdırarak, PHP yürütülmesi tamamlandıktan sonra hepsi aynı anda basılacak tamponda bu bilgileri depolamak oluyor.

Hemen satırdan sonra tarayıcıya bu içeriği temizlemesini PHP isterseniz, her biri çağrıldıktan sonra bir anda çıktı o olacak sonra, her birinden sonra flush() bir satır metin aramak gerekir.

Sen flush () kullanmanız gerekir

Floş bir döngü bir örneği () 'dir

<?php
 ob_start();
 for ($i = 0; $i < 10; $i++)
 {
   echo "<div>" . time() . ": Iteration $i</div>";
   sleep(1);
   ob_flush();
   flush();
 } 
 ob_end_flush();
?>

Eğer iletileri işlemek için php zorlamak, çünkü sık sık yıkayın olmamalı ve bu yürütme süresi artacaktır.

Sen echo in \n koymak olabilir veya print tampon temizlemek için.