Op het web werken we niet real-time. In geen enkele toepassing/database.
Een "browser" vraagt info aan de database, die komt in een formulier, en kan de aangepaste info terugsturen om te bewaren in een database.
Probleem stelt zich als een tweede bezoeker zich aanmeldt.
Dan krijg je dit:
Bezoeker 1: Vraag info op (A, B, C)
Bezoeker 2: Vraagt info aan server (Krijgt A,B,C)
Bezoeker 2 (is sneller) en schrijft naar de database: (A1, B, C)
Bezoeker 1 drukt submit na de aanpassing en schrijft: (A, B1, C)
Dus de aanpassing van bezoeker 2 is overschreven omdat bezoeker 1 te traag was.
Je zou dit kunnen oplossen door per record een veld bij te houden dat op "lock" wordt gezet als een bezoeker de info opgevraagd heeft om te updaten.
En de "lock" wordt er af gehaald als de update geschreven is.
Probleem is, wat als de bezoeker gewoon niet verder doet, of de sessie verloopt.
Dan blijft het record gelockt.
Dan zou je kunnen een script laten lopen dat om de x aantal seconden alle records zoekt die "lock"-ed staan, en waarvan de lock ook ouder is dan x minuten (vb de duur van je sessie time-out) en die records worden dan terug vrijgegeven. Maar daar zijn nadelen aan. Bijvoorbeeld dat records lang kunnen gelocked staan...
Question
bram
Enig idee hoe je dit kunt oplossen.
Op het web werken we niet real-time. In geen enkele toepassing/database.
Een "browser" vraagt info aan de database, die komt in een formulier, en kan de aangepaste info terugsturen om te bewaren in een database.
Probleem stelt zich als een tweede bezoeker zich aanmeldt.
Dan krijg je dit:
Bezoeker 1: Vraag info op (A, B, C)
Bezoeker 2: Vraagt info aan server (Krijgt A,B,C)
Bezoeker 2 (is sneller) en schrijft naar de database: (A1, B, C)
Bezoeker 1 drukt submit na de aanpassing en schrijft: (A, B1, C)
Dus de aanpassing van bezoeker 2 is overschreven omdat bezoeker 1 te traag was.
Je zou dit kunnen oplossen door per record een veld bij te houden dat op "lock" wordt gezet als een bezoeker de info opgevraagd heeft om te updaten.
En de "lock" wordt er af gehaald als de update geschreven is.
Probleem is, wat als de bezoeker gewoon niet verder doet, of de sessie verloopt.
Dan blijft het record gelockt.
Dan zou je kunnen een script laten lopen dat om de x aantal seconden alle records zoekt die "lock"-ed staan, en waarvan de lock ook ouder is dan x minuten (vb de duur van je sessie time-out) en die records worden dan terug vrijgegeven. Maar daar zijn nadelen aan. Bijvoorbeeld dat records lang kunnen gelocked staan...
Dus: ik vind dit geen elegante oplossing.
Iemand een geniaal idee?
6 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.