Eredmény tábla tárolása SESSION-ben
Véleményt szeretnék kérni az alábbi feladattal kapcsolatban.
Adott egy lekérdezés eredmény táblája, mely akár 1000 rekordot is tartalmazhat, rekordonként kb. 300 karakternyi/bájtnyi adattal.
Feladat, az eredmény listázása tördelve (pl. 20 rekord).
De mivel az adatbázis tartalma akár percenként is változhat (új rekordok kerülnek be, régiek törlődnek) ezért a hagyományos GET paraméteres (?page=1...50), oldal újrabetöltős lapozás nem megfelelő, mivel ha 2 lapozás között új rekord kerül a táblába, akkor lehetséges, hogy az lekérdezés rendezése miatt egy korábbi oldalra szúródik be.
Ezért gondoltam arra, hogy a teljes, nem limitált eredménytáblát betöltöm egy SESSION változóba (adatbázis alapú session kezelés) és a kezdeti 20 rekord megjelenítése után a SESSION tömböt olvasva ajaxszal bővíteném vagy lapoznám a listát. Természetesen ebben az esetben is frissülhet az adatbázis, de a megjelenített eredménytábla az adott futtatási időpontnak megfelelne és ez lenne a legfontosabb.
A kérdésem, hogy érdemes-e, szabad-e ilyen mennyiségű adatot SESSION változóban tárolni, nem lassítja ez az oldal működését. Bár mivel adatbázisban tárolom és nem fájlban ezért szvsz. nem, de nem vagyok benne biztos.
Illetve, hogy az adott problémát egyáltalán jól közelítem meg, vagy teljesen máshogy kellene a listázást megvalósítani.
■ Adott egy lekérdezés eredmény táblája, mely akár 1000 rekordot is tartalmazhat, rekordonként kb. 300 karakternyi/bájtnyi adattal.
Feladat, az eredmény listázása tördelve (pl. 20 rekord).
De mivel az adatbázis tartalma akár percenként is változhat (új rekordok kerülnek be, régiek törlődnek) ezért a hagyományos GET paraméteres (?page=1...50), oldal újrabetöltős lapozás nem megfelelő, mivel ha 2 lapozás között új rekord kerül a táblába, akkor lehetséges, hogy az lekérdezés rendezése miatt egy korábbi oldalra szúródik be.
Ezért gondoltam arra, hogy a teljes, nem limitált eredménytáblát betöltöm egy SESSION változóba (adatbázis alapú session kezelés) és a kezdeti 20 rekord megjelenítése után a SESSION tömböt olvasva ajaxszal bővíteném vagy lapoznám a listát. Természetesen ebben az esetben is frissülhet az adatbázis, de a megjelenített eredménytábla az adott futtatási időpontnak megfelelne és ez lenne a legfontosabb.
A kérdésem, hogy érdemes-e, szabad-e ilyen mennyiségű adatot SESSION változóban tárolni, nem lassítja ez az oldal működését. Bár mivel adatbázisban tárolom és nem fájlban ezért szvsz. nem, de nem vagyok benne biztos.
Illetve, hogy az adott problémát egyáltalán jól közelítem meg, vagy teljesen máshogy kellene a listázást megvalósítani.
Session
Tehát akkor sem ajánlott, ha
Ha nem, akkor ajánlanál egy módszert/programot, hogy ezt a mennyiségű adatot hogyan cache-seljem?
a session-nel az lesz a baj,
egyszerűen pazarlod a memóriát. csinálj egy cache táblát, vagy használj, APC-t, memcache-t
szerintem.
és azért ha egy cache átlagosan 2-3 MB, akkor elég hamar meg tud ugrani a szükséges tárterület, ezzel is számolj. és meddig tárold? 1 óra elég?
ha bevállalható, akkor lehet, hogy töltse inkább le a júzer a 3MB-ot, aztán lapozgassa, amíg bírja.
Nem az a problema
A session olvasást nehezebb
Ettől függetlenül is tévútnak tűnik (bár pontosan nem derül ki a leírásból, hogy mi a problémád). Az AJAX + session és a nemAJAX + DB között nincs semmi érdemi különbség, nem hiszem, hogy bármilyen problémát megoldana a váltás. (Vagy kliensoldalon le akarod tárolni az 1000 rekordot, AJAXból frissíteni, és AJAX nélkül, tisztán kliensoldalon lapozni? Az egy lehetséges megoldás, bár AJAX helyett inkább valami long polling technológia lenne a kézenfekvő.)
Köszönöm az eddigi
"Ettől függetlenül is tévútnak tűnik (bár pontosan nem derül ki a leírásból, hogy mi a problémád)."
Tegyük fel, hogy a weboldalon le lehet kérni az ADOTT PILLANATBAN (T) levegőben lévő repülőket. Ez lenne maga az eredmény tábla, ami mondjuk kb. 1000 ilyen járatot listázna ki. De mivel elég nagy a repülőforgalom ezért lehet, hogy a T+1perc-es lekérdezés már mást mutatna, ezért nem jó nekem az újrabetöltödős lapozás, mert a
És ezért gondoltam, hogy akkor valahogy letárolnám a T időpontban kapott eredményt és lapozás gyanánt pedig ajax-szal olvasnám a letárolt adatot.
Annyi még, hogy a session nem fájlban, hanem adatbázisban tárolódik.
Remélem most már egyértelmű voltam... jól szeretném megcsinálni, nem tévútra menni.
Csak egy gyors ötlet
Gyors ötlet, de nekem jónak