Einzelnen Beitrag anzeigen
Alt 08.02.2010, 18:59  
Samhayne
Neuer Benutzer
 
Registriert seit: 22.01.2010
Beiträge: 25
PHP-Kenntnisse:
Fortgeschritten
Samhayne befindet sich auf einem aufstrebenden Ast
Standard

@JumperII:

Zum Zeitpunkt zu der ich die Tabelle sperren möchte, weiß ich noch nicht, wieviele Einträge ich verändern muss... leider.

So kann ich auch nicht alles in einen Ausdruck packen.

An einen Sempahorenwert hatte ich tatsächlich auch schon gedacht.
Sah hier nur die Gefahr, daß wieder zwei gleichzeitig die Tabelle sperren. (wenn's ganz dumm läuft)
Bei Lock hätte ich noch eine Art Rückgabe erwartet, die mir sagt ob das Locken für mich erfolgreich war.

So bleibt für mich aber dann weiterhin das Problem... wie lasse ich die User warten, die grad auch schreiben wollen?
Ich trau dem Braten nicht, wenn ich checke ob ein Semaphor gesetzt ist und wenn nicht, dann einen setze. Auch hier könnten ja zwei User gleichzeitig auf die Idee kommen.

Dachte an irgendwas wie...

PHP-Code:
function update()
{
   if (
funkymysql_lock_table("table_haumiblau"$db)) 
   {
      
//do table updates

   
}
   else
   {
      
sleep(0.5);
      
update();
   }


Dazu noch'n Timeout + wenn Timeout, dann Reset des Semaphors und anschließend Tabellenvalidierung (ich denk mal, das meintest Du).

Hmm... ich könnte in den Sempahor natürlich noch die User_id mit einbauen.
Dann wär's eindeutig.

1) Check ob Semaphor gesetzt
2) Wenn nicht, setze meine user_id + Rechte
3) SELECT: wenn MEINE user_id + Rechte gesetzt, leg los...

Das ganze am besten in einem Aufwasch... *kopfkratz*
Vielleicht mit einem mysqli_multi_query()?
Ich hoffe, da kann dann nicht nochmal ein User dazwischen...

Denk ich zu kompliziert?





@nikosch:

Es sind 3 Tabellen... wobei es schon reichen würde, eine zu sperren und die anderen user solange warten zu lassen.

Geändert von Samhayne (08.02.2010 um 19:11 Uhr).
Samhayne ist offline   Mit Zitat antworten