Progressbar aneb vypisovani stavu zpracovani
- 2bfree
- Člen | 248
Zdravim,
mam ve sve aplikaci dve metody, jejichz zpracovani muze trvat delsi cas (az nekolik sekund). Chtel bych tedy, aby se pred samotnym zavolanim techto funkci jiz vykreslila stranka a zobrazila alespon informaci o tom, ze prave probiha proces ten ci onen a zobrazila animovany gif nebo tak neco, aby uzivatel vedel, ze se neco deje.
Tusim, ze se bude jednat o praci s funkcemi ob_start() a ob_flush(), ale nejak nejsem schopen prijit na to, jak toho dosahnout.
Pomohl by nekdo prosim?
- Patrik Votoček
- Člen | 2221
http://php.net/flush ale není to moc spolehlivé
Editoval vrtak-cz (25. 6. 2010 16:30)
- 2bfree
- Člen | 248
vrtak-cz napsal(a):
http://php.net/flush ale není to moc spolehlivé
Ano, přesně o tento typ řešení mi jde. Jenomže nevím, kde to mám přesně volat. Zkoušel jsem v prezenteru okolo těch funkcí, které chci volat, ale nevypíše mi to šablonu.
Rozhodně to nechci dělat ani JS ani AJAXem, ale hezky pěkně přes ob_funkce, ale nevím jak dosáhnout toho, abych vykreslil šablonu těsně před </body>, pak zavolal ty metody co jim to trvá, že by se jeden zvencnul a pak teprve dokreslil šablonu.
- Mikulas Dite
- Člen | 756
Tak můžeš vypsat progress bar a nechat šablonu v klidu dokreslit, potom vypočítat data a udělat redirect na zobrazení toho vygenerovaného obsahu.
- odin
- Člen | 50
Rozhodně to nechci dělat ani JS ani AJAXem, ale hezky pěkně přes ob_funkce, ale nevím jak dosáhnout toho, abych vykreslil šablonu těsně před </body>, pak zavolal ty metody co jim to trvá, že by se jeden zvencnul a pak teprve dokreslil šablonu.
Obavam se, ze to je v rozporu s principem HTML stranky. Stranka by mela koncit </html>, nikde neni receno, ze prohlizec musi vykreslovat nekompletni stranku. ob_flush udela jen to, ze prohlizeci posle nejaka data (tj. pokud se nezavola ob_flush() tak se echo odesle az po dokonceni skriptu). Je to uzitecne k tomu, ze se da zrychlit nacitani stranky (mezitim co se generuje kus stranky, tak se jiz dalsi kus odesila) a k usetreni pameti (odeslana data se muzou vyhodit z pameti) a k dalsim vecem. Kazopadne nic nenuti ty data prohliec zobrazovat, radsi pocka az na HTTP 200. Jedine pekne/ciste reseni je bud jak psal Mikulas Dite nebo pres AJAX.
- Tharos
- Člen | 1030
2bfree napsal(a):
Rozhodně to nechci dělat ani JS ani AJAXem, ale hezky pěkně přes ob_funkce
Asi je to věc názoru, ale tato věta mi zní skoro jako kdyby někdo řekl: „Rozhodně to nechci dělat v nějakém MVC, ale chci to mít hezky pěkně procedurálně.“ :) Mně osobně AJAXové řešení připadá elegantní a řešení přes výstupní buffer jako vyloženě nevhodné (v dnešní době).
Editoval Tharos (1. 7. 2010 13:20)