Miten tehdään streamiin kirjoittaminen sitä mukaa kun dataa valmistuu?
header("Content-type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename=data.xls");
for ($i=0; $i
Datan kirjoitus osissa
4
335
Vastaukset
- keksa1
http://php.net/manual/en/book.outcontrol.php
esmes alussa ob_end_flush() ja sitten flush() siellä for-loopissa. - lienee hiukan
ongelmallista Excelin käsitellä "streamina" koska ihan viimeisissäkin datoissa
saattaa olla jotain joka ohjaa koko datan käyttäytymistä. - basss
Kirjoitin alkuperäisen viestin turhan epäselvästi ja esimerkissä oli liikaa liikkuvia osia, sorry. Yritän siis saada aikaan sellaista, että kun serveri pukkaa ulos tekstiä niin se tulisi selaimelle välittömästi eikä vasta kun skripti on ajettu. Esim. taulukon ensimmäinen rivi näkyisi jo selaimessa kun toista riviä vasta generoidaan serverillä. Se, että selaimelle kerrotaan että data pitää avata Exceliin (noi header-lauseet) ei ole oleellista, ne vain sattui turhaan jäämään esimerkkiin. Sleep(1) taas on koodissa siksi, että loopin suoritus kestäisi jonkin aikaa ja ehtisi nähdä tuleeko data pätkittäin vai kerralla.
Kiitos linkintä flushiin. Flush ei kuitenkaan auttanut. Linkin takana kyllä kerrotaan, että
"flush() may not be able to override the buffering scheme of your web server and it has no effect on any client-side buffering in the browser. ... Several servers, especially on Win32, will still buffer the output from your script until it terminates before transmitting the results to the browser."
Serverinä on Apache Win32-ympäristössä. Siitäköhän tässä on kyse? Mulla on Java-servletti joka tekee samaa Win32-Tomcatissa ja sieltä data tulee hienosti pätkittäin sitä mukaa kun sitä tulostetaan.- basss
Löysin netistä tämmöisen. Se toimii, vaikka en ihan kokonaan tiedä miksi :-)
function forceFlush() {
ob_start();
ob_end_clean();
flush();
@ob_end_flush();
}
Ketjusta on poistettu 0 sääntöjenvastaista viestiä.
Luetuimmat keskustelut
Venäjä aikoo yksipuolisesti muuttaa rajalinjauksia Suomenlahden itäosassa
Venäjä aikoo muuttaa rajalinjauksia Suomenlahden itäosassa Venäjän saarten eteläpuolella. Ylen jutussa kerrotaan mm.1821398Suomi lähettää tarkkailijoita merialueelle
Venäjä on ilmoittanut aikovansa ylittää Suomen merialueen rajat kysymättä lupaa kertomalla että Suomen merialueen raj3111090RIP Lauri Paavola
Kansalaisaktivisti ja freelance-journalisti Lauri Paavola on kuollut vain 31-vuotiaana. Hän tuli tunnetuksi hyvin kärjek281077- 1441044
En pidä sinusta, en kirjoita viestejäni sinulle.
Yritä nyt ymmärtää. En koskaan tule kiinnostumaan sinusta. Jätä minut rauhaan täällä.97918Upea, kaunis ja menestynyt Martina menee onnellisesti naimisiin
Mitäs palstan vihaajamönkeröt tähän? Kiehuttaako? Kaikki vain eivät ole kauniita ja menestyviä kuten Martina.227891- 59855
Ehdin aamulla
ajattelemaan sinua. Olit ensimmäisenä mielessäni. Avasin silmäni tähän uneen, jota elämäksi kutsutaan. Kuuntelin lintuje126851Asuntojen reaalihinnat alimmillaan 20 vuoteen
Sääliksi käy niitä jotka pari vuotta sitten maksoivat itsensä kipeäksi. Kohta pankki ottaa asunnon haltuunsa ja huutok84838Terveystalo paljasti yksityisen sairaanhoidon empatia puutteet
Yksityisellä puolella raha ratkaisee, jos ei ole rahaa potilas ei saa empatiaa eikä siten apuakaan: Poliisi teki rikosi92810