shmop_open
(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)
shmop_open — Erstellt oder öffnet einen gemeinsamen Speicherbereich
Beschreibung
shmop_open() kann einen gemeinsamen Speicherbereich erstellen oder öffnen.
Parameter-Liste
-
key
-
Die System-ID des gemeinsam genutzten Speicherbereichs. Dieser Parameter kann als Dezimal- oder Hexadezimalzahl übergeben werden.
-
mode
-
Folgende Flags können benutzt werden:
- "a" zum Zugriff (access) auf einen gemeinsamen Speicherbereich (setzt SHM_RDONLY für shmat). Benutzen Sie dieses Flag, wenn Sie einen bestehenden gemeinsamen Speicherbereich nur zum Lesen öffnen wollen.
- "c" zum Erzeugen (create) eines gemeinsamen Speicherbereichs (setzt IPC_CREATE). Benutzen Sie dieses Flag, wenn Sie einen neuen gemeinsamen Speicherbereich erzeugen wollen, oder, falls bereits ein Segment mit derselben ID existiert, zum Öffnen dieses Bereichs 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 Speicherbereichs (setzt IPC_CREATE|IPC_EXCL). Benutzen Sie dieses Flag, wenn Sie einen neuen gemeinsames Speicherbereich erzeugen wollen. Falls schon einen Bereich 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.
-
permissions
-
Die Zugriffsberechtigungen für die gemeinsamen Speicherbereiche 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 gibt shmop_open() eine
Shmop-Instanz zurück, die verwendet werden kann, um
auf den erstellten gemeinsamen Speicherbereich zuzugreifen. Bei einem
Fehler wird false
zurückgegeben.
Changelog
Version | Beschreibung |
---|---|
8.0.0 | Bei Erfolg gibt diese Funktion nun eine Shmop-Instanz zurück; vorher wurde eine resource zurückgegeben. |
Beispiele
Beispiel #1 Einen neuen gemeinsamen Speicherbereich erstellen
<?php
$shm_key = ftok(__FILE__, 't');
$shm_id = shmop_open($shm_key, "c", 0644, 100);
?>
In diesem Beispiel wurde ein gemeinsamer Speicherbereich geöffnet. Die System-ID wurde von der Funktion ftok() zurückgegeben.
Siehe auch
- shmop_close() - Schließt einen gemeinsamen Speicherbereich
- shmop_delete() - Löscht einen gemeinsamen Speicherbereich