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:

<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Feldolgozas</title>
</head>
<body>
<h1>Feldolgozas folyamatban...</h1>

<?php

flush();

for ($i=0;$i<10;$i++) {
  echo "<p>$i. sor [OK]</p>\n";
  flush();
  sleep(1);
}

?>

<p>Ez megvona. Minnya fojtattyuk...</p>

<script>
setTimeout(function() { location.href='eredmeny.htm' },1000)
</script>

</body>
</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.