Hi!
Die vielen Parallelen Threats schreiben und lesen meist munter auf
nur einer Datenbanktabelle rum (weil sich die meisten leute im Chat halt immer in der Lounge aufhalten) Bei parallenen Zugriffen kommt daher hin und wieder ein duplicate entry fehler vor, wenn zufällig zwei mit derselben id (auto increment) was schreiben wollen, bei viel
verkehr (70 Leute im Chat) im Moment so alle viertelstunde.
mySQL unterstützt derzeit sogenannte "Transaktionen", wie sie bei größeren DB System wie ORacle, DB2, usw usus sind noch nicht. Meiner Meinung nach ist das auch nicht ganz so wichtig, ausgenommen du möchest ein Programm für Banken, Versicherungen usw. mit sensiblen Daten etwickeln.
Hab zwar selber ncoh kein Chat System geschrieben, würde das ganze aber etwas anders angehen:
Ein Tabelle raum_lounge erstellen, welche nur die Chatter-ID beinhaltet, die sich gerade im Raum befinden, und für jeden User eine eigene Tabelle anlegen ala chatter_IDXXXX mit deinen gewünschten Informationen und einer Spalte (Chat_room) Dadurch kann es nie zu parallelen Schreibzugriffen kommen (--> kein Fehler)
Eine Abfrage über das was gerade im Chat passiert mußt du aus der room table alle anwesenden User auslesen und dann deren Tabelle anzeigen (geordnet nach Zeit, denn ansonsten gibts ein Chaos) weiters sollten dann die chatter_IDXXXX Tabellen nach einem Logout gelöscht werden. (Damit die DB nicht irgendwann explodiert ;-) )
mfg webmonk