shmop_open
Erstellt oder öffnet einen gemeinsamen Speicherblock
Beschreibung
int shmop_open
( int $key
, string $flags
, int $mode
, int $size
)
Parameter-Liste
-
key
-
Die System-ID des gemeinsam genutzten Speicherblocks, dieser
Parameter kann als Dezimal- oder Hexadezimalzahl übergeben werden.
-
flags
-
Folgende Flags können benutzt werden:
-
"a" zum Zugriff (access) auf einen gemeinsamen Speicherblock (setzt SHM_RDONLY für shmat).
Benutzen Sie dieses Flag, wenn Sie einen bestehenden gemeinsamen Speicherblock nur zum Lesen öffnen wollen.
-
"c" zum Erzeugen (create) eines gemeinsamen Speicherblocks
(setzt IPC_CREATE). Benutzen Sie dieses Flag, wenn Sie einen
neuen gemeinsamen Speicherblock erzeugen wollen oder, falls
bereits ein Segment mit derselben ID existiert, zum Öffnen
dieses Segments für Lese- und Schreibzugriffe.
-
"w" für Lese- und Schreibzugriffe. Benutzen Sie dieses Flag
wenn Sie in einen gemeinsamen Speicherbereich schreiben oder
daraus lesen müssen. Das wird meistens der Fall sein.
-
"n" zum Erzeugen eines neuen gemeinsamen Speichersegments
(setzt IPC_CREATE|IPC_EXCL). Benutzen Sie dieses Flag, wenn Sie
ein neues gemeinsames Speichersegment erzeugen wollen. Falls
schon ein Segment mit diesem Flag existiert, schlägt die Funktion
fehl. Dies ist aus Sicherheitsgründen nützlich, denn damit können
Sie vermeiden, dass konkurrierende Prozesse ausgenutzt werden.
-
mode
-
Die Zugriffsberechtigungen für die gemeinsamen Speichersegmente sind
dieselben wie für Dateien. Diese Berechtigungen müssen als Oktalwerte
übergeben werden, zum Beispiel 0644.
-
size
-
Die Größe des erzeugten gemeinsam genutzten Speicherbereichs in Byte.
Hinweis:
Beachten Sie: der dritte und vierte Parameter sollten mit 0 angegeben
sein, falls Sie einen bereits existierenden Speicherbereich öffnen.
Rückgabewerte
Bei Erfolg liefert die Funktion shmop_open eine ID
zurück, die Sie zum Zugriff auf den erstellten gemeinsamen Speicher benutzen
können. Bei einem Fehler wird FALSE zurückgegeben.
Beispiele
Beispiel #1 Einen neuen gemeinsamen Speicherblock erstellen
<?php
$shm_key = ftok(__FILE__, 't');
$shm_id = shmop_open($shm_key, "c", 0644, 100);
?>
In diesem Beispiel wurde ein gemeinsamer Speicherblock geöffnet. Die
System-ID wurde von der Funktion ftok zurückgegeben.