2012-04-11 8 views
1

In der Verwendung von php Shared Memory und Semaphoren. Wie kann ich zuerst überprüfen, dass der Schlüssel für den Semaphor und den geteilten Speicherblock nicht mit anderen Instanzen von PHP kollidiert? Kann man bei Verwendung der Funktion shm_attach zum Erstellen eines neuen Blocks feststellen, ob der Block bereits existiert?php Shared Memory und Semaphor, vermeiden Schlüsselkollision

Antwort

2

Ich verstehe nicht wirklich, was Sie hier fragen. Der ganze Punkt des Shared Memory ist, dass es shared ist - so in der Lage, den gleichen Schlüssel in verschiedenen Instanzen von PHP zu verwenden, ist so ziemlich eine Anforderung.

In der Regel verwenden Benutzer Dateisystempfade (semantisch sinnvoll), um Schlüssel (nicht sinnvoll) über die Funktion ftok() zu generieren. Wenn Sie einen zufälligen Schlüssel generieren möchten, der von keiner anderen PHP-Instanz gemeinsam genutzt wird, verwenden Sie tempnam(), um eine neue Datei zu erstellen, und fügen Sie sie dann ein.

Wenn Sie die Funktion shm_attach verwenden, um einen neuen Block zu erstellen, gibt es eine Möglichkeit zu überprüfen, ob der Block bereits existiert?

Ja - fügen Sie etwas ein, nachdem Sie es erstellt haben. Wenn es zwischen diesen 2 Schritten leer war, dann ist es neu.