PHP uyku () excution dizisi echoeing süre

2 Cevap

Ben şu var:

echo time()."<br>";

sleep(1);
echo time()."<br>";

sleep(1);
echo time()."<br>";

Ben, time()."<br>" ln 1, eko time()."<br>" ln 4 echo son saniye bekleyin ve ardından nihai time()."<br>" yankı niyeti ile önceki kod yazdı. O zaman () arasındaki aralıklarla geldiğinde zaman yankılandı bieng doğru taşıyamazsınız, tüm fonksiyonlar her uyku fonksiyonu bekleme süresi / parametrelerinin toplam sonra echoeing edilir echo.

Bu komut dosyası çalışır nasıl:

  • Excutes.
  • 2. secons bekler.
  • echoes
    1275540664
    1275540665
    1275540666

time() yankılanan doğru artımları dikkat edin. Benim soru neden, onu yankıları nerede beklenen gibi davranıyor, bir saniye bekler, tekrar yankıları, bekler biri ikinci final ve ardından son parametre yankılanırken? Değildir edilir

Benim soru ise benim ifadeler biraz kafa karıştırıcı olduğunu biliyorum, ama bu ilgili herhangi bir yorum cevaplamak için elimden geleni yapacağım, teşekkürler.

2 Cevap

Siz çıkış tamponlama açık var.

PHP çıkışını tampon ve küçük öbekler halinde çıktı yazmak için birden fazla seferde tarayıcı tüm yazmak için çok daha etkilidir. Yani PHP çıkışını tampon ve sonunda tek seferde tüm göndermek (veya tampon belirli bir boyutu alır kez) olacak.

Ama sonra tekrar, ben tavsiye etmem - elle ben bu "gerçek" bir app tavsiye etmem ama echo her aramadan sonra (flush() arayarak tampon temizleyebilirsiniz ya sleep düzenli bir app çağrı!).

Genellikle ob_flush() kullanabilirsiniz, ama kesinlikle güvenilir değil. Ve ne yazık ki, başka hiçbir seçenek var.