megosztott dokumentumok weben
A kérdés elég elméleti jellegű, azért írom ide, mert épp az ajaxon töröm a fejem(de lehet, hogy zsákutca).
Amit szeretnék megoldani: egy weben keresztűl elérhető dokumentumot kéne egy munkacsoportnak szerkesztenie (tehát valahogy úgy, mint az ms office-ban). Ha valaki dolgozik rajta más ne férhessen hozzá. Mindez történjen nagyon megbízhatóan és hatékonyan. A végső cél, hogy egy adatbázisban tárolt html dokumentumot lehessen browserben futó wysiwyg editorral szerkeszteni és visszamenteni.
remélem érthető voltam
■ Amit szeretnék megoldani: egy weben keresztűl elérhető dokumentumot kéne egy munkacsoportnak szerkesztenie (tehát valahogy úgy, mint az ms office-ban). Ha valaki dolgozik rajta más ne férhessen hozzá. Mindez történjen nagyon megbízhatóan és hatékonyan. A végső cél, hogy egy adatbázisban tárolt html dokumentumot lehessen browserben futó wysiwyg editorral szerkeszteni és visszamenteni.
remélem érthető voltam
Megosztás rész
1. Van-e kint flag?
IGEN -> más dolgozik | NEM -> 2. lépés
2. Generálunk egy flag-et, ami a usert is azonosítja, kitesszük (még jobb, ha pl. a session_id-vel azonosítunk, így azt is kiszűrjük, ha azonos felhasználónévvel akar két ember egyszerre - pl. ha egy munkacsopotnak egy jelszava van, de amúgy is, mindenképpen praktikusabb a session_id)
3. Visszaolvassuk a flag-et, hogy a sajátunk-e
4. Sajátunk?
IGEN -> 5. lépés | NEM -> más dolgozik
5. Mehet a munka
6. Töröljük a flag-et
Annyiban még érdemes kiegészíteni, hogy a flag mellé kiteszed a generálás időpontját is, és az első vizsgálatkor azt is megnézed, mikori a kint lévő flag, és ha bizonyos időnél régebbi, akkor nem veszed figyelembe, mert előfordulhat, hogy bent ragad valaki, és akkor "soha többet" (míg kézzel nem törlöd a flag-et) nem tud senki dolgozni. Sőt, ha már AJAX technikában gondolkodsz, akkor megteheted azt is, hogy a szerkesztgetés közben bizonyos időközönként (teszem azt percenként) frissíted az időpontot ha a felhasználó még mindig igazolhatóan szerkesztget, és akkor a vizsgálatnál nézheted azt is akár, hogy pár percnél régebbi-e a flag időpontja, és így sokáig nem tud bent ragadni.
na igen
én is pont ezen rágódom, hiszen az adatbázisok saját zárolása csak a művelet
erejéig él (hacsak nem tranzakciós táblát használok -de az vagy van, vagy nincs, tehát max megírom hozzá a kezelőt)
namost a tranzakciós tábla elég megbízható:) viszont, nem elég hatékony!
annyira nagy a veszélye a gyakorlatban, hogy valaki bennszakítja a sessiont, hogy azzal súlyozottan kell számolni! tehát maradna a sztenderd megoldás, hogy
lejárati dátumot kap (ahogy írtad is). viszont, ha ez túl rövid, akkor korlátozom a munkát, ha hosszú, feleslegesen kell valakinek várnia...
na ezért agyalok azon (amit szintén írtál), hogy a júzer előre meghatározott időnként bejelentkezik(ld ajax) és megerősíti a sessiont. ez nem lenne rossz, csak jó lenne tudni, milyen lehetséges buktatói vannak, van-e valakinek hasonlóval tapasztalata. ez első félelmem, hogy nem növelem-e a szerver terhelését indokolatlanul és irreálisan.
Az emiatti terheléstől nem félnék
nem vészes
a másik ami miatt tartok, az úgye a kliensoldali rutinok esetlegessége. ez mondjuk nem akkora gond, mert a rendszer annyira zárt, hogy előírhassam a böngésző tipusát(tipusait), verzióját, beállításait. a js ellenőrizné a környezetet, ha gond van bármivel, el sem indul a cucc.
de, ha a rendszer védett már, akkor rögtön ott a felhasználó:)
legalább annyira gond, ha valamiért nem sikerül adott időn belűl a bejelentkezés! akkor ugye új sessiont kell kezdeni, és frissíteni kell a dokumentumot (ha más épp nem nyitotta meg), mindezt úgy, hogy az addigi munka lehetőleg !!!ne vesszen el!!!, !!!ne bízzunk túl sok feladatot a felhasználóra!!!...
valahogy zsigerből az az érzésem, hogy egy fontos szempont elkerüli a figyelmemet:)
Zárt rendszer
Én olyan megoldásra gondoltam, hogy a JS kód periodikusan figyeli, hogy dolgozik-e még a felhasználó, konkrétan, hogy szerkeszti-e a szöveget. (Ezt persze gondosan kéne kivitelezni, hogy ne lassítsa a felhasználó munkáját.) Ha x intervallum óta nem nyúlt hozzá, akkor feltenne egy kérdést, hogy "hahó, itt vagy-e még". Amennyiben erre érkezik válasz, akkor rendben, nem bántjuk, ha viszont nem érkezik, akkor AJAX technikával kiléptetjük, miközben lezárjuk a dokumentumát, esetleg mentjük is az utolsó állapotot, töröljük a hozzátartozó flag-et. Az az eset kizárható, amit írtál, hogy "ha éppen más nem nyitotta meg", mivel a kint lévő flag miatt ez nem lehetséges.
majdnem
bejelentkezik pl. percenként... a gond ott van, ha ez valamiért nem
jön össze. akkor megszűnik a zárlat, mert nem volt megerősítés. periódikusan menteni az jó ötlet, mert a legnagyobb kond a kliensen tárolni adatokat(bármeddig is). valahogy úgy lehetne ezt finomhangolni, hogy percenként megerősítés, plusz egy perc türelmi idő, ami alatt sűrűbben próbálkozna a kliens. vagy ezt tudja az ajax magától is? na ez pl. fehér folt.
Szerintem