Beschreibung
int
shmop_open ( int key, string flags, int mode, int size)
shmop_open() Kann einen gemeinsamen Speicherbereich erstellen oder öffnen.
shmop_open() benötigt 4 Parameter: key, die
System-ID des gemeinsam genutzten Speicherblocks, dieser Parameter
kann als Dezimal- oder Hexadezimalzahl übergeben werden. Der
zweite Parameter bezeichnet die Flags, die man benutzen kann:
"a" zum Zugriff (access) auf einen gemeinsamen Speicherblock (setzt SHM_RDONLY für shmat).
Benutzen Sie dieses Flag, wenn Sie einen bestehenden gemeinsamen Speicherblock zum Lesen öffnen wollen.
"c" zum Erstellen (create) eines gemeinsamen Speicherblocks
(setzt IPC_CREATE). Benutzen Sie dieses Flag, wenn Sie einen
neuen gemeinsamen Speicherblock erstellen 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 Sicherheitslöcher vermeiden.
Der dritte Parameter ist der Modus, der die Zugriffsrechte, die
Sie dem gemeinsamen Speicher zuweisen wollen, angibt. Das sind
dieselben Zugriffsrechte wie für Dateien. Zugriffsrechte müssen
oktal angegeben werden, z.B. 0644. Der letzte Parameter gibt die
Grösse des gemeinsamen Speichers, den Sie erstellen wollen, in
Byte, an.
Anmerkung:
Beachten Sie: Der dritte und vierte Parameter muss als 0
angegeben werden, wenn Sie ein existierendes gemeinsames
Speichersegment öffnen wollen. Bei Erfolg liefert die Funktion
shmop_open() eine ID zurück, die Sie zum
Zugriff auf den erstellten gemeinsamen Speicher benutzen können.
Beispiel 1. Einen neuen gemeinsamen Speicherblock erstellen <?php
$shm_id = shmop_open(0x0fff, "c", 0644, 100);
?> |
|
In diesem Beispiel wurde ein gemeinsamer Speicherblock mit der
System-ID 0x0fff erstellt.