(PHP 4, PHP 5, PHP 7)
shm_attach — Shared Memory Segment anlegen oder anbinden
$key
[, int $memsize
[, int $perm
= 0666
]] ) : resource
shm_attach() liefert eine ID über die auf ein
System V Shared Memory Segment mit dem gegebenen key
zugegriffen werden kann. Der erste Zugriff auf ein noch nicht existierendes
Segment legt dieses mit der Größe memsize
und Zugriffsberechtigungen
gemäß der in perm
gesetzten Bits an.
Ein zweimaliger Aufruf der Funktion shm_attach()
mit dem gleichen key
liefert eine andere ID,
über beide IDs wird aber trotzdem auf das gleiche Shared Memory
Segment zugegriffen. memsize
und
perm
werden in diesem Fall ignoriert.
key
Eine numerische Shared Memory Segment Id.
memsize
Die Größe des Shared Memory Segments in Bytes. Wird dieser Parameter nicht übergeben so wird der Wert aus sysvshm.init_mem in php.ini angenommen. Ist auch dieser nicht gesetzt ist der Vorgabewert 10000 Bytes. bytes.
perm
Optionale Zugriffsrechte als Bitmaske, Default ist 0666.
Liefert ein Shared Memory Resource Handle.
Version | Beschreibung |
---|---|
5.3.0 | Diese Funktion gibt nun eine Ressource anstatt eines Integer zurück. |
Hinweis:
Diese Funktion vor PHP 5.3.0 einen Integer-Wert zurück. Dieses Verhalten kann durch einen Cast auf Integer simuliert werden falls dies aus Portabilitätsgründen nötig sein sollte.
<?php
// Temporäre Datei erstellen und Dateipfad speichern
$tmp = tempnam('/tmp', 'PHP');
// Dateitoken-Schlüssel ermitteln
$key = ftok($tmp, 'a');
// SHM-Resource anbinden, beachten Sie den weiter unten folgenden Cast
$id = shm_attach($key);
if ($id === false) {
die('SHM-Segment kann nicht erzeugt werden');
}
// Cast auf Integer, da vor PHP 5.3.0 die Resource-ID als
// Integer zurückgegeben wurde. Der Cast simuliert dieses
// Verhalten
$id = (integer) $id;
?>