ugrás a tartalomhoz

Hosszabb ideig futó scriptnél állapot visszajelzés a kliens felé

fchris82 · 2010. Júl. 11. (V), 00.27
Van egy script, ami adatokat dolgoz fel, fájlokból. Előfordulhat, hogy kap mondjuk egy 10 000 soros excel-t. Ezt az ember egy formon keresztül feltölti és vár. Szeretnék írni vmit, ami visszajelez, hogyan halad a feldolgozás. Mondjuk egymás alatt jelennének meg üzenetek, hogy 'x. sor [OK]'. Csak mégis ezt hogyan? Van vkinek vmi ötlete erre?
 
1

Ajax

janoszen · 2010. Júl. 11. (V), 01.48
Ezt szerintem AJAX-szal szépen meg lehet oldani. Írsz a kimenetre, flusholsz, JavaScriptből meg partial contentként kapod meg.

Szerk: esetleg a feldolgozást tedd külön lépésbe.
2

Ha van APC telepítve a

Protezis · 2010. Júl. 11. (V), 09.05
6

Ez jónak tűnik

fchris82 · 2010. Júl. 12. (H), 18.41
Ez jónak tűnik, csak nem igazán értem a működését. Egy jó ideje nézegetem a forráskódokat, de akkor sem állt még össze a kép. Nincs erről egy leírás valahol, ami nem olaszul van? :D Vagy esetleg vki nem tudná nekem leírni a működést nagy vonalakban?

Csinál egy iframe-et és azon keresztül küldi a fájlt. Az oké. És aztán honnan tudja, hogy hol tart?
3

Mondjuk egymás alatt

kuka · 2010. Júl. 11. (V), 12.26
Mondjuk egymás alatt jelennének meg üzenetek, hogy 'x. sor [OK]'.
Hol itt a gond ? Hívogasd a flush() függvényt és minden jó lesz:
  1. <!DOCTYPE html>  
  2. <html>  
  3. <head>  
  4. <meta charset="ISO-8859-1">  
  5. <title>Feldolgozas</title>  
  6. </head>  
  7. <body>  
  8. <h1>Feldolgozas folyamatban...</h1>  
  9.   
  10. <?php  
  11.   
  12. flush();  
  13.   
  14. for ($i=0;$i<10;$i++) {  
  15.   echo "<p>$i. sor [OK]</p>\n";  
  16.   flush();  
  17.   sleep(1);  
  18. }  
  19.   
  20. ?>  
  21.   
  22. <p>Ez megvona. Minnya fojtattyuk...</p>  
  23.   
  24. <script>  
  25. setTimeout(function() { location.href='eredmeny.htm' },1000)  
  26. </script>  
  27.   
  28. </body>  
  29. </html>  
4

Ezt te kipróbáltad?

fchris82 · 2010. Júl. 12. (H), 17.33
Mert akkor kíváncsi lennék, hogyan sikerült neked működésre bírni :D
5

Működik

Poetro · 2010. Júl. 12. (H), 18.03
Nálam működik, ugyan a JS-es továbbítást kivettem.
7

ahaaa

fchris82 · 2010. Júl. 12. (H), 18.55
Na. Nekem azután sikerült működésre bírnom, miután beszúrtam egy ob_end_flush()-t a kódba az elejére. A php.ini-ben nekem az output_buffering értéke 4096 volt és nem Off... :-/ Tehát nekem ezért nem akart ez az egész alapból összejönni, mert az elején én is ezzel próbálkoztam.

Ez a megoldás akkor tökéletesen jó lesz. Köszönöm!
8

Onhivo ajax

saxus · 2010. Júl. 13. (K), 20.12
Csak nem nagyker importot irsz? :)

Mi anno ezt ugy oldottuk meg, hogy feltolti az user az excelt, majd sessionban taroltuk, hogy hol tartottunk (=elejen). Az az oldal, ahova kerult a feltoltes utan egybol inditott az onload esemeny vegen egy ajax kerest, hogy dolgozza fel az excel tablat. Az ajax keres alatt feldolgozott n sort (asszem valahanyszazasaval sikerult beloni ugy, hogz olyan 2-5 mp legyen, bar ez erosen fugg az alkalmazastol is), majd a vegen kiirta, hogy ennyi kesz + meghivta onmagat. Mindezt tette addig, ameddig el nem fogyott a feldolgozando adat.

Nem a legszebb megoldas, de anno gyorsan kellett es mukodott. Persze, nem muszaj AJAX hozza.
9

Daemon

janoszen · 2010. Júl. 13. (K), 22.13
Na ez pont az amire daemont vagy kliens oldali alkalmazást kellene írni. XULban irtó gyorsan össze lehet lapátolni.