shmop_open

(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)

shmop_openErstellt oder öffnet einen gemeinsamen Speicherbereich

Beschreibung

shmop_open(
    int$key,
    string$mode,
    int$permissions,
    int$size
): Shmop|false

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.

Fehler/Exceptions

Wenn mode ungültig ist oder size kleiner oder gleich Null ist, wird ein ValueError ausgelöst. Bei anderen Fehlern wird ein E_WARNING ausgegeben.

Changelog

VersionBeschreibung
8.0.0 Bei Erfolg gibt diese Funktion nun eine Shmop-Instanz zurück; vorher wurde eine resource zurückgegeben.
8.0.0 Wenn mode ungültig ist oder size kleiner oder gleich Null ist, wird ein ValueError ausgelöst; vorher wurde stattdessen ein E_WARNING ausgegeben und die Funktion gab false zurück.

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

To Top