Ik ben zoals meer mensjes hier bezig met een eigen forum te bouwen. Ik ben nu bezig met het aantal berichten per thread/forum weer te geven. Nu zit ik te twijfelen tussen 2 methoden:
Daarom zou ik eigenlijk de tweede methode wel willen gebruiken, maar ik weet niet hoe het zit met locking enzo.
Stel dat ik de zaak zo implementeer dat als een user een bericht heeft gepost, het veld met het totaal aantal berichten middels een SELECT wordt opgehaald, en daarna met een UPDATE +1 wordt verhoogd.
Nu het probleem: Stel dat 2 users tegelijk een bericht posten, en heel toevallig tegelijk met een SELECT de waarde ophalen en daarna weer wegscrijven. Nu is de counter niet met 2 verhoogd, maar met 1. (Bijde users halen bijv. het getal 100 op en schrijven 101 weg).
Weet iemand mij te vertellen wat de beste methode is (misschien toch de 1e, maar dan wel argumenten plz) of hoe ik de tweede methode kan oplossen (semaphores ofzo
)
Misschien kan Femme
of iemand anders die sleutelt aan het GOT forum mij vertellen hoe dat hier is gedaan????
Tnx in advance
- Gewoon elke keer als iemand een overzicht van threads of forums opvraagd een "SELECT COUNT* FROM blabla" uitvoeren.
- In een appart veld voor elk(e) thread/forum bijhouden hoeveel posts er in staan. Elke keer als er gepost wordt worden deze variabelen bijgewerkt.
code:
1
2
3
4
| SELECT COUNT(*) FROM messages, threads WHERE messages.thread_id = threads.thread_id AND threads.forum_id = $this_forumid |
Daarom zou ik eigenlijk de tweede methode wel willen gebruiken, maar ik weet niet hoe het zit met locking enzo.
Stel dat ik de zaak zo implementeer dat als een user een bericht heeft gepost, het veld met het totaal aantal berichten middels een SELECT wordt opgehaald, en daarna met een UPDATE +1 wordt verhoogd.
Nu het probleem: Stel dat 2 users tegelijk een bericht posten, en heel toevallig tegelijk met een SELECT de waarde ophalen en daarna weer wegscrijven. Nu is de counter niet met 2 verhoogd, maar met 1. (Bijde users halen bijv. het getal 100 op en schrijven 101 weg).
Weet iemand mij te vertellen wat de beste methode is (misschien toch de 1e, maar dan wel argumenten plz) of hoe ik de tweede methode kan oplossen (semaphores ofzo
Misschien kan Femme
Tnx in advance