CXLVI. Semaphore, Shared Memory und Interprozesskommunikation Funktion

Einführung

Diese Extension bietet Funktionen zur Nutzung der Unix System V IPC Funktionen. Sie unterstützt Semaphore, Shared Memory und den Nachrichtenaustausch zwischen Prozessen (Inter Process Communication - ICP).

Semaphore können genutzt werden um den exklusiven Zugriff auf eine gemeinsame Resource zu koordinieren oder um die Anzahl der gleichzeitigen Zugriffe auf aine gemeinsame Resource zu limitieren.

Die Extension bietet auch Funktionen zur Nutzung von Shared Memory. Im Shared Memory lassen sich prozessübergreifend globale Variablen anlegen. Verschiedene PHP Prozesse sowie in anderen Sprachen (z.B. Perl, C, ...) geschriebene Anwendungen können auf diese Daten zugreifen und so einen globalen Datenaustausch bereitstellen. Beachten Sie das Shared Memory alleine keinen Schutz gegen konkurierende Zugriffe bietet, dieser kann allerdings mit Hilfe von Semaphoren sichergestellt werden.

Tabelle 1. Durch Unix vorgegebene Shared Memory Maximalwerte

SHMMAXmaximale Größe eines Shared Memory Segments, üblich sind 131072 Bytes
SHMMINminimale Größe eines Shared Memory Segments, üblich ist 1 Byte
SHMMNImaximale Anzahl von Shared Memory Segmente auf dem System, üblich sind 100
SHMSEGmaximale Anzahl von Shared Memory Segmenten je Prozess, üblich sind 6

Die Funktionen zum Nachrichtenaustausch können genutzt werden um Nachrichten an andere Prozesse zu verschicken oder zu empfangen. Sie bieten einen einfachen und effektiven Weg zum Datenaustausch zwischen Prozessen ohne auf Alternativen wie Unix Domain Sockets zurückgreifen zu müssen.

Anmerkung: Diese Erweiterung steht auf Windowsbetriebssystemen nicht zur Verfügung.

Anforderungen

Diese Erweiterung benötigt keine externen Bibliotheken.

Installation

Die in diesem Abschnitt dokumentierten Funktionen sind in den Standardeinstellungen nicht aktiviert. Unterstützung für System V Semaphore kann durch kompilieren mit der Option --enable-sysvsem aktiviert werden. Unterstützung für System V Shared Memory kann durch kompilieren mit der Option --enable-sysvshm aktiviert werden. Unterstützung für System V Nachrichten kann durch kompilieren mit der Option --enable-sysvmsg aktiviert werden.

Laufzeit Konfiguration

Das Verhalten dieser Funktionen wird durch Einstellungen in der php.ini beeinflusst.

Tabelle 2. Semaphore Konfigurationsoptionen

NameVorgabewertÄnderbarHistorie
sysvmsg.value"42"PHP_INI_ALL 
sysvmsg.string"foobar"PHP_INI_ALL 
Weitere Details und die Definitionen der PHP_INI_*-Konstanten finden Sie im Anhang H.

Vordefinierte Konstanten

Folgende Konstanten werden von dieser Erweiterung definiert und stehen nur zur Verfügung, wenn die Erweiterung entweder statisch in PHP kompiliert oder dynamisch zur Laufzeit geladen wurde.

Tabelle 3. System V Nachrichten Konstanten

KonstanteTypunterstützt
MSG_IPC_NOWAITinteger 
MSG_EAGAINintegerAb 5.2.0
MSG_ENOMSGintegerAb 5.2.0
MSG_NOERRORinteger 
MSG_EXCEPTinteger 

Inhaltsverzeichnis
ftok --  Erzeugt aus einem Dateipfad und einem Projektbezeichner einen System V IPC Schlüssel
msg_get_queue --  Message Queue anlegen oder an existierende Queue anbinden
msg_receive --  Receive a message from a message queue
msg_remove_queue --  Entfernt eine Message Queue
msg_send --  Send a message to a message queue
msg_set_queue --  Setzt Metadaten in derMessage Queue Datenstruktur
msg_stat_queue --  Liefert Informationen zu einer Message Queue
sem_acquire -- Zugriff auf Semaphor anfordern
sem_get -- Zugriff auf ein Semaphor anfordern
sem_release -- Semaphor freigeben
sem_remove -- Semaphor entfernen
shm_attach -- Shared Memory Segment anlegen oder anbinden
shm_detach -- Anbindung an ein Shared Memory Segment beenden
shm_get_var -- Liest eine Variable aus dem Shared Memory
shm_put_var --  Aktualisiert eine Variable im Shared Memory
shm_remove_var -- Entfernt eine Variable aus dem Shared Memory
shm_remove -- Entfernt ein Shared Memory Segment unter UNIX