Spass und Ärger mit memcached

Tangarama

Mitglied
Ave!

Um meine Datenbank zu schonen, programmiere ich momentan auf dem Memcache ein "Wer ist derzeit online?". Soviel zu dem Hintergrund.

Nun zum Problem:
Da ja nicht nur eine Instanz des Apaches/PHPs/Scripts läuft, wollte ich nun einen Lock in den Memcache $memcache->set('Lock', "Locked"); setzen, damit es andere Instanzen in diesem Moment nicht gestattet ist, den betreffenden Bereich meines MemCaches zu verändern, den das aktuelle Script nun verändern wird.

Soweit so schön, allerdings, mal grob vereinfacht, das passiert:

PHP:
$memcache->set('Lock', "Locked");
if ($memcache->get('Lock') != "Locked") { echo "Frei!"; }
Ausgabe:
Frei!

Anscheinend wird der MemCache erst später geschrieben, kann das sein?

Die Frage ist hier auch, was würde in diesem Moment mit einer anderen Instanz passieren, die ebenfalls auf den MemCache greifen würde, die würde dann wohl auch gesagt bekommen "Ja, Du darfst, der MemCache steht nicht auf Locked" :-(

Kind regards
JCB
 
Zurück