ugrás a tartalomhoz

print() ciklusba ágyazva, az eredmény miért 5ösével 10esével jelenik meg?

Anonymous · 2006. Május. 18. (Cs), 11.59
Sziasztok!

Arra keresek választ, hogy egy aránylag hosszadalmas ciklusban kiíratok valamit valahogy így:

for($i=0;$i<100000;$i++){
 print("$i");
}
ez csak úgy jelenik meg a böngészőben, hogy tölt az oldal 1000-el, majd megjelenik az első X db. kiíratás, aztán megint tölt és megint megjelenik x db.

Ez miért van?
 
1

ezert

inti · 2006. Május. 18. (Cs), 12.19
Tudtommal a böngészők úgy működnek, hogy folyamatosan töltik le az oldalt, és amit értelmezni tudnak azt azonnal kiírják. Valszeg, amiben nézted az X karakterenként frissítette a megjelenítést. Az IE néha az egész oldalt letölti, beparszolja, css-ezi és csak a végén dobja ki a megjelenítőnek.

Jó péda erre egy div-be töltött rengeteg szöveg, ami addig nem jelenik meg, amíg a div záró tag-jét be nem olvasta a böngésző, mert akkor illeszti be az objektumot az objektumfába.

inti
2

flush()

Anonymous · 2006. Május. 18. (Cs), 12.42
Próbáld ezt ;)

for($i=0;$i<100000;$i++){
 print("$i");
 flush();
}
3

Output buffering

halee · 2006. Május. 18. (Cs), 12.46
Hello!

Ami neked kell szerintem az az output pufferelés...
ob-start
Ezen a linken utána tudsz olvasni a dolognak...

üdv,
Halee
4

re: köszi mindenkinek!

Anonymous · 2006. Május. 18. (Cs), 12.59
Hú, ez nagyon süti!

Megmondom, miért van rá szükségem:

Tervezem egy Flash-es folyamatjelző készítését, hosszadalmasabb folyamatokhoz:
pl: adatbázis-exportokhoz: nagyméretű csv vagy más szöveges file-ok kiírásához, vagy ha a phpmailer-rel hírlevelet küldök a többszáz vagy esetleg 1000 feliratkozott felhasználónak, akkor ki tudom iratni, hgoy épp hol tart a dolog.

Ezzel közelebb kerültem a megoldáshoz.
Köszi mindenkinek mégegyszer!

Üdv:

El