Du bist hier: Tips » Scripte » PHP
PHP
Referenzliste

shm_attach

Semaphore Funktionen

    Befehl:
resource shm_attach ( int $key [, int $memsize [, int $perm = 0666 ]] )


    Parameter-Liste:
NameBeschreibung
keyEine numerische Shared Memory Segment Id.
memsizeDie 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.
permOptionale Zugriffsrechte als Bitmaske, Default ist 0666.

    Rückgabewerte:
Liefert ein Shared Memory Resource Handle.

    Beschreibung:
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össe memsize und Zugriffsberechtigungen gemäss 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.


    Aktiv in Version:
(PHP 4, PHP 5, PHP 7)

    Hinweis:
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.


    Siehe auch:
Anbindung an ein Shared Memory-Segment beenden
 
•  ftok()
Erzeugt aus einem Dateipfad und einem Projektbezeichner einen System V IPC Schlüssel
 

shm_attach() - Beispiel:


Eingabe:
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;
?>


Beschreibung:
Version Beschreibung
4.3.0 resumepos wurde hinzugefügt.
Semaphore Funktionen