Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: PHP: ruudunpäivitys kesken skriptin suorituksen

Sivun loppuun

zagreb [24.07.2004 21:20:28]

#

Eli tämmönen on tilanne. PHP-skriptissä haen luupissa pariltasadalta nettisivulta tietoja. Koko skriptin suoritus kestää yli 10 minuuttia. Olisi hauska saada haun tuloksia tulostettua sitä mukaa kun niitä tulee. Luupissa on kyllä echo-lauseet, mutta ne sitten tulostuvat kaikki kerralla, vasta kun koko skripti on suoritettu. Onko PHP:ssä edes mahdollista saada tulostettua sitä HTML:ää kesken suorituksen?

Antti Laaksonen [24.07.2004 21:33:01]

#

Varmasti toimivaa tapaa ei taida olla, mutta testaapa flush-funktiota. Jos ajat skriptin omalla koneellasi, voisit myös tehdä vaikka niin, että skripti tallentaa luetut tiedot tiedostoon ja toinen skripti näyttää tiedoston senhetkisen sisällön automaattisesti päivittyvällä sivulla.

T.M. [24.07.2004 21:47:53]

#

ob_flush();
flush();

Nuo molemmat kun laitat niin varmasti toimii. Huomasin itse kun pelkkä flush() ei riittänyt.

ajv [25.07.2004 04:27:37]

#

T.M. kirjoitti:

ob_flush();
flush();

Nuo molemmat kun laitat niin varmasti toimii. Huomasin itse kun pelkkä flush() ei riittänyt.

Juuh, toimii kyllä ie:llä, mutta Operalla ei tietoakaan... Ja käytännössä kuitenkin IE sucks!!

zagreb [25.07.2004 19:15:49]

#

Kiitos vastauksista. Nyt lähti toimimaan. Siinä skriptissä oli vielä sellainenkin yksinkertainen vika, mikä esti tietojen päivittymisen niiden tullessa, että laitoin datat html-taulukkoon. Tuo flush() ei näköjään tulosta vajaata taulukkoa riveittäin, vaan tulostaa koko taulukon vasta sitten kun tulee </table> lopetustagi. Pitää nyt vaan muotoilla ilman taulukoita.

T.M. [25.07.2004 19:49:16]

#

ajv kirjoitti:

Juuh, toimii kyllä ie:llä, mutta Operalla ei tietoakaan... Ja käytännössä kuitenkin IE sucks!!

Kyllä tämä näyttää toimivan operallakin:
http://koti.mbnet.fi/winuus/set/4bc9f28216f60da0b9bfbe9ed20e09c5.php

koodi:

<?php

while(1){
    print rand()."<br>";
    usleep(500000);
    ob_flush();
    flush();
}

?>

Niin ja sivua ei voida näyttää kesken scriptin suorituksen jos seassa on jotain eriokoista HTML:ää
Plaintext näkyy parhaiten, <BR> tagit toimivat myös, mutta sekaan, tai sitä ennen on turha laittaa mitään taulukoita ym.

Jostain hassusta syystä sivu ei näy kuin vasta 10 sekunnin päästä jos käyttää noita flusheja.

ajv [26.07.2004 07:34:24]

#

Juuh, niinpä näyttää tomivan. Testasin vain tuota sun Koodin nopeuden testaajaa ja siinä en saanut tuota toimimaan Operalla.

T.M. [26.07.2004 11:20:11]

#

Joo eipäs näytäkkään toimivan, paska juttu. Johtunee tuosta <pre> tagista. IE se sitten osaa ;)


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta