En saa Sleep funktiota millään toimiaan, eli haluaisin että PHP scripti pysähtyisi hetkeksi ja jatkaisi uudestaan, mutta sivuni odottaakin kaikki Sleep-komennot ennen kuin näyttää sivulla mitään, vaikka koitin myös flushia. testisivuni: (käytän firefoxia)
<HTML> <BODY> Odota... <?php flush(); sleep(2); ?> Odota vielä... <?php flush(); sleep(2); ?> Done. </BODY> </HTML>
Eli tämä sivu toimii mulla siten, että se odottaa 4 sekuntia, ennen kun lataa koko sivua ollenkaan, ja sitten näyttää noi kaikki samalla kertaa.
Toisessa keskustelussa todettiin, että viruksentorjuntaohjelmat (ja ehkä myös välityspalvelimet ynnä muut hienoudet) voivat aiheuttaa tuon ongelman. Asiaa ei voi PHP:llä kiertää, koska ongelma on käyttäjän puolella. Täytyy siis keksiä jokin muu ratkaisu, jolla pääsee haluamaansa tulokseen.
Niin, sitten on sellainenkin hassu juttu että jotkin selaimet (ainakin vanha IE) ei ala renderöimään sivua ennen kuin se on valmis tai vähintään tietty tavumäärä on tullut. Tämä oli sitten kierretty esim. kiss.fi:n historiallisessa chatissa lähettämällä sivun alkuun riittävä määrä kommentteja.
Tosiaan nykyään varmaan suurempi ongelma nuo Metabolixin mainitsemat asiat, joiden kiertäminen on vaikeampaa ellei peräti mahdotonta.
Ok, kiitoksia tiedoista. Pitää sit jotain muuta yrittää keksiä...
koita: ob_flush(); flush(); yhdistelmää
Sahrah kirjoitti:
koita: ob_flush(); flush(); yhdistelmää
Jos olisit lukenut muiden vastauksia, tietäisit varmaan, ettei tuokaan auta.
Metabolix kirjoitti:
Sahrah kirjoitti:
koita: ob_flush(); flush(); yhdistelmää
Jos olisit lukenut muiden vastauksia, tietäisit varmaan, ettei tuokaan auta.
Luin edelliset vastaukset kyllä. Omakohtaisesta kokemuksesta voin sanoa, ettei flush() toimi ilman ob_flushia() ja Mozilla Firefox 2 ainakin tulostaa juttuja vaikka sivun lataus on vielä kesken. Muista selaimista en tiedä, mutta tuo on ratkaisu siihen mitä kysyjä halusi tietää.
EDIT: Tein pikaisen testin. Tuo toimii Firefox 3:llakin ja IE 6:lla. Välityspalvelimen kanssa en tiedä.
Sahrah kirjoitti:
Omakohtaisesta kokemuksesta voin sanoa, ettei flush() toimi ilman ob_flushia()
Toimiihan se, jos palvelin on säädetty muuten sopivasti. Mutta ei tässä ole kyse PHP:n tai edes selainten toimivuudesta, vaan kuten toisessa keskustelussa todettiin, viruksentorjuntaohjelma voi estää kaiken myös toimivaksi havaitulla sivulla ja selaimella.
Aihe on jo aika vanha, joten et voi enää vastata siihen.