Hello,
oder habe ich da jetzt was verkehrt verstanden?
http://php.net/manual/en/memcache.add.php sagt:
"Memcache::add() stores variable var with key only if such key doesn't exist at the server yet"Die Variable wir also nur dann beschrieben, wenn der Schlüssel nicht existiert.
Wenn der Schlüssel existiert, ist bereits jemand anders an der Variablen dran, wenn der eigene Prozess nicht verschlafen hat, sich das zu merken, dass er es selber war...Hmmm.. aber er soll es ja nur machen können wenn das hinzufügen erfolgreich war. Angenommen jemand anderes ist an der variable dran. Dann wäre add === false. Wenn ich dann auf while(false===$mem->add()) machen würde, würde er doch das was in der While-Schleife steht, genau dann ausführen, wenn jemand anderes dran ist oder?
Bin ich gerade blind&Blöd&überarbeitet?
Ich weiß zwar immer noch nicht, wer "er" ist. Aber wie oft soll denn die Variable benutzt werden? Ich rate jetzt mal, genau einmal. Sie soll aber nur beschrieben werden können, wenn gerade kein anderer Prozess an der Variable dran ist. Das wird signalisiert (Semaphor=Signal) durch das Signal. Ist das Signal gesetzt (vorhanden), wird die Variable von einem anderen Prozess gesetzt. Dann darf dein Prozess kein Signal setzten, denn es ist schon da.
Solange also ein Signal vorhanden ist, kann kein eigenes erstellt werden. Solange _kein_ eigenes ertellt werden kann, muss also versucht werden, eines zu erstellen. Erst, wenn ein eigenes Signal erstellt werden konnte, darf geschrieben werden.
---->solange (kein_eigenes_Signal_erstellt_werden_kann) --+
^ |
+-------------------------------------------------------+
anschließend_verändere_die_Variable;
nimm_das_Signal_wieder_weg;
So muss es aussehen!
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg