Kodları lütfen aşağıdaki butonları kullanarak renklendirin. Örnek: <php> echo "Selam Dünya"; </php>
Yardım
karakter kaldı

Php de uzun süren bir sorgu ekrana parça parça yazdırabilirmiyim

merhaba arkadaşlar hemen sorunu özetlileyim bir döngü var elimde epeyice uzun süren bir döngü ve ben istiyorum ki server döngünün olduğu sayfayı tamamen yorumlayıp bitirdiğinde değilde döngünün her adımında ekrana çıktı versin

yani döngü nün her adımına yazdığım echo ekrana basılsın döngü devam ederken aşağı dığru dökülen yazılar oluşucak şekilde ben bunu jquery ajax ile kısmen yaptım ama benim isteğim server sayfayı yorumlamayı bitirmeden enranda bir takıl çıktılar versin bazı yükleme scriptlerinde olduğu gibi birde sayfanın time out olmaması gerek böyle bir teknik varmı bildiğiniz arkadaşlar
+0
-0
Cevaba KatılıyorumKatılmıyorum
Cevap Yaz Yorum Yaz Arşivime Ekle Takip Et

Cevaplar

  • tapsin adlı üyenin fotoğrafı
    10 yıl önce yazılmış
    147 cevap - 0 soru
    server.scripttimeout = 999999

    bu sayfaya eklemen gereken bir tanımlama sayfa timeout olmasın diye ikinci dediğine gelince mesajı split ile belirli yerlerden bölerek döngüye sokabilirsin.

    Örnek:

    xmlstr_numbers=replace(xmlstr_numbers," ","")
    gsmdizi1 = split(xmlstr_numbers,",")

    set fs=Server.CreateObject("Scripting.FileSystemObject")
    set fname=fs.CreateTextFile("c:\TextFiles\" & dosya & ".txt" ,true)

    for i=0 to uBound(gsmdizi1)
    if len(gsmdizi1(i))=10 then
    fname.WriteLine(dosya & "|90" & gsmdizi1(i))
    end if
    next


    Bu ASP olarak sizin kullandığınız dil nedir? Bu kısımları diğer dillere çevirebilirsiniz sanıyorum.
    Burada 90544xxxxxxx,90535xxxxxxx

    şeklinde giden dizi halinde numaraları virgülden bölerek bir text dosyasına alt alta yazdırdım.
    Geri kalan mantığı sizin dosyanıza ve nelerden bölmek istediğinize bağlı olarak değişmelisiniz.
    • emoty_88 adlı üyenin fotoğrafı emoty_88
      ilgin için teşekkür ederim ben php ile yazıyorum sistemi alında yapmak istediğim bir html oluşturmak

      şöyle database den 50000 tane kayıt geliyor bu kıyıtların herbirini tekrar 50000 kayıt ile karşılaştırıp bir html tabloya alt alta diziyor işlem bittiğinde bunu bir yere dosya olarak kaydetmesini istiyorum
      10 yıl önce yazılmış
    • tapsin adlı üyenin fotoğrafı tapsin
      Kayıtları SQL de karşılaştırman daha hızlı sonuç verir SQL sorgusunda bunu karşılaştırıp ardından bir döngü ile parça parça ekrana verebilir tam olarak elindeki veri tabanı tablolarını ve sorgunu söyler isen yardımcı olurum o konuda da
      10 yıl önce yazılmış
  • muratmoon adlı üyenin fotoğrafı
    10 yıl önce yazılmış
    38 cevap - 1 soru
    flush() ile o ana kadar olan kısmı browsera gönderebilirsin. burada dikkat etmen gereken 2 şey var;

    1) Browserlar belli boyuttan küçük içeriği göstermez, o yüzden içeriğin arttıkça ekranda gözükmeye başlayacaktır.
    2) HTML çıktıyı table ile vermemen gerekiyor. Table ancak tamamlandığında gözükür. Bu yüzden Div vb taglarla yada salt çıktı vermelisin.

    set_time_limit( int $seconds ) bu fonksiyonlar PHP kodunun timeout olmamasını sağlayabilirsin.
  • 1
    xandercage adlı üyenin fotoğrafı
    10 yıl önce yazılmış
    6 cevap - 0 soru
    döngü içerisinde doğrudan ekrana bastığınız da zaten istediğiniz gibi olur. fakat browser yorumlarken bir dizi değişiklik söz konusu olur.

    örneğin,
    for($i=0; $i<50000; $i++)
    {
        echo $i.'<br>';
    }
    


    bu şekilde bir döngü istediğiniz sonucu verir.

    ama siz döngüyü
    echo '<table><tr>';
    for($i=0; $i<50000; $i++)
    {
        echo '<td>'.$i.'</td>';
    }
    echo '</tr></table>';
    


    şekilnde yada benzer bir şekilde kullanıyorsanız, çıktı browsere ulaşsa bile browser en son </table> yi görmeden görüntüyü vermeyecektir.

    Dolayısı ile php de yapılan işlem kadar client tarafı da önem taşıyor.

    siz çıktıyı <div></div> içerisinde, browsere her hangi bir tag'ın bitişini beklemeyecek şekilde ekrana veri basarsanız, ekrana veri birden değil yüklendikçe gelir.

    php zaman aşımı için ise; sayfanızın en üstüne

    set_time_limit(300); //saniye cinsinden 300 = 5 dakika
    direktifini ekleyerek sayfanızın zaman aşımı limitini 30 saniyeden 5 dakikaya çıkartabilirsiniz. 
    Tabi bu zaman aşımı değerini siz değiştirebilirsiniz de...
    Kolay gelsin.