Signatur
Beschreibung
posix_getpgrp() gibt die sogenannte Process Group ID (PGID) des aktuell laufenden PHP-Prozesses zurück. Jeder Prozess in einem POSIX-konformen Betriebssystem (z. B. Linux, macOS) gehört einer Prozessgruppe an. Diese Gruppe wird durch eine ganzzahlige ID identifiziert und dient dazu, zusammengehörige Prozesse zu bündeln – etwa um Signale an alle Mitglieder der Gruppe gleichzeitig senden zu können.
Die Prozessgruppe wird in der Regel vom Prozess geerbt, der den aktuellen Prozess gestartet hat (z. B. ein Shell-Prozess). PHP-CLI-Skripte erhalten beim Start die Prozessgruppe des aufrufenden Terminals oder Daemons. Diese Information ist nützlich, wenn PHP im Zusammenspiel mit Prozesssteuerung, Signalverarbeitung oder Daemon-Implementierungen eingesetzt wird.
Diese Funktion ist nur auf POSIX-kompatiblen Systemen verfügbar und erfordert die POSIX-Erweiterung (ext/posix). Auf Windows-Systemen steht sie nicht zur Verfügung. Typische Einsatzgebiete sind Systemprogrammierung, das Überwachen von Prozessen und das Entwickeln von Diensten (Daemons), die ihre eigene Prozessgruppe kennen müssen.
Rückgabewert
Beispiele
Prozessgruppen-ID ausgeben
<?php
// Gibt die Prozessgruppen-ID des aktuellen PHP-Prozesses aus
$pgid = posix_getpgrp();
echo "Aktuelle Prozessgruppen-ID (PGID): " . $pgid . PHP_EOL;
// Zum Vergleich: PID und Parent-PID
$pid = posix_getpid();
$ppid = posix_getppid();
echo "Prozess-ID (PID): " . $pid . PHP_EOL;
echo "Elternprozess-ID (PPID): " . $ppid . PHP_EOL;
PGID in einem einfachen Daemon-Kontext prüfen
<?php
// Typischer Einsatz: Prüfen, ob der Prozess Gruppenanführer ist
// (PID == PGID bedeutet, der Prozess ist Gruppenanführer)
$pid = posix_getpid();
$pgid = posix_getpgrp();
if ($pid === $pgid) {
echo "Dieser Prozess ist der Gruppenanführer (Session/Group Leader)." . PHP_EOL;
} else {
echo "Dieser Prozess ist KEIN Gruppenanführer." . PHP_EOL;
echo "Gruppenanführer hat PGID: " . $pgid . PHP_EOL;
}
// Wichtig · Fallstricke
Plattformabhängigkeit: posix_getpgrp() steht nur auf POSIX-kompatiblen Betriebssystemen (Linux, macOS, BSD usw.) zur Verfügung. Auf Windows ist die Funktion nicht verfügbar und führt zu einem fatalen Fehler, wenn die POSIX-Erweiterung fehlt.
Erweiterung erforderlich: Die Funktion gehört zur ext/posix-Erweiterung. Diese muss in der PHP-Konfiguration aktiviert sein (--enable-posix beim Kompilieren oder als Shared Extension geladen).
Zu beachten ist, dass die PGID sich nach einem pcntl_fork()-Aufruf im Kindprozess anders verhalten kann, wenn der Kindprozess eine eigene Prozessgruppe mittels posix_setpgid() bildet.