Google Chrome ve Akış HTTP bağlantıları?

6 Cevap php

Bu külçe karşılaşmak Google chrome, diğer tarayıcılarda olduğu gibi aynı davranmaz:

<?php
while (true) {
    echo "<script type='text/javascript'>\n";
    echo "alert('hello');\n";
    echo "</script>";
    flush();

    sleep(5);
}
?>

Bu herhangi bir şey yapmadan önce sonlandırmak için bağlantı için bekliyor gibi görünüyor.

Yoklama dışında ben Google Chrome'da benzer bir şey nasıl yapabilirim?

6 Cevap

Bazı tarayıcılar mevcut veri işleme önce indirilecek bayt belirli sayıda gerektirir. Ben Sana tarayıcı ile rahatsız olur emin olmak için 300 boşluklar gibi bir şey dökümü zorunda sona erdi ne yaptığınızı yapmaya çalıştım son kez hatırlıyorum.

Ben buna benzer bir sorunu vardı, ve her sifon önce (benim durumumda
olarak) bir HTML etiketi ekleyerek bunu çözdü.

Benim tahminim Chrome bir eleman için bekler olacağını which is being displayed tetikleme önce kapatmak için yeniden işlemek. Ama bu sadece bir tahmin.

1024 bayt gerektirir değildi - ben çalıştığım altında sadece 512 bayt olurdu düşünüyorum.

Ben bazı fikirleri test etmek için şu anda Chrome'a ​​erişim olsaydı. Eğer </script> sonra bazı HTML ekleyerek ve aşamalı hale görmesini denediniz mi? Ben it would hayal, ve böylece Chrome sayfa yüklenirken <script> elemanları javascript çalıştırmak istemiyor kanıtı olurdu eğer. Tabii ki, biçimlendirme render çalıştırmak için komut tetikleyebilir. Eğer yoksa, harici dosyalar olarak javascript dahil deneyebilirsiniz ve bu yürütme süresini etkilediğini görmek.

Özellikle sayfa yükler gibi, tarayıcılar genelde javascript yürütme başlar ne zaman spec göre biraz zaman kaybı olduğunu düşünüyorum. Bu oylama olmaksızın tamamen çapraz tarayıcı şekilde bunu yapmak mümkün olmayabilir.

En iyi çözüm, diğer tarayıcıları gibi Chrome doğrusu bunun için bir çözüm olmasındansa davranır olun Did you talk with Chrome developers? Did you open a bug about that? IMHO.

Tamam, aslında muhtemelen kısa vadeli bir çözüm gerekir. Ancak her tarayıcı her yönüyle farklı davranacağı bir dünyayı hayal, HTTP, HTML, CSS işleme ... hoş bir yer olmaz ki!

Akış çalışıyor. Eyelidlessness gelen cevabı çözümdür.

"2048 puan [BR> \ n" yazdırmak;

[= <

BTW kullanıcı aracısı bakmak. Safari çok bayt gerekmektedir. Ben 1024. Firefox değil çok bayt gerektiğini düşünüyorum.

<?php
$i = 0;
while (true) {
  if($i == 0){
    echo "<html><body>";

  }
  echo "<script type='text/javascript'>\n";
  echo "alert('hello');\n";
  echo "</script>";
  if($i == 0 ){
    $padstr = str_pad("",2048,"&nbsp;");
    echo $padstr;
    echo "</body></html>";
  }
    flush();

    sleep(5);
    $i = $i + 1;
}
?>

Yumruk süre için veri en az 2048 byte gönderir. o zaman para cezası çalışacaktır. Ve bir vücut etiketi script etiketi tutmak için emin olun. Ben o amele 1.024 bayt eklerseniz garip şey, benim durumumda olduğunu. Bu size yardımcı olur umarım

Yukarıdaki program google chrome iyi çalışıyor.