Signatur
Beschreibung
posix_getpid() liefert die Prozesskennung (englisch: Process ID, kurz PID) des aktuell laufenden PHP-Prozesses als Ganzzahl zurück. Die PID ist eine systemweit eindeutige Nummer, die vom Betriebssystem bei der Prozesserstellung vergeben wird.
Typische Einsatzgebiete sind das Erzeugen eindeutiger temporärer Dateinamen, das Schreiben von Lock-Dateien (PID-Files), das Protokollieren und Debugging von Prozess-Hierarchien sowie die Koordination mehrerer parallel laufender PHP-Prozesse (etwa bei CLI-Daemons oder Fork-basierten Anwendungen mit pcntl_fork()).
Die Funktion ist Bestandteil der POSIX-Erweiterung und steht daher ausschließlich auf POSIX-kompatiblen Systemen (Linux, macOS, BSD usw.) zur Verfügung. Unter Windows ist sie nicht nutzbar.
Rückgabewert
Beispiele
PID des aktuellen Prozesses ausgeben
<?php
$pid = posix_getpid();
echo "Aktuelle PID: " . $pid . PHP_EOL;
PID-Datei (Lock-File) für einen CLI-Daemon schreiben
<?php
$pidFile = '/var/run/mein-daemon.pid';
// Prüfen, ob der Daemon bereits läuft
if (file_exists($pidFile)) {
$vorhandenePid = (int) file_get_contents($pidFile);
// Prüfen, ob der Prozess tatsächlich noch läuft
if (posix_kill($vorhandenePid, 0)) {
echo "Daemon läuft bereits mit PID $vorhandenePid. Beende." . PHP_EOL;
exit(1);
}
}
// Eigene PID in die Datei schreiben
$pid = posix_getpid();
file_put_contents($pidFile, $pid);
echo "Daemon gestartet mit PID $pid." . PHP_EOL;
// ... Daemon-Logik ...
// Beim Beenden PID-Datei entfernen
unlink($pidFile);
echo "Daemon beendet." . PHP_EOL;
Eindeutigen temporären Dateinamen mit PID erzeugen
<?php
$pid = posix_getpid();
$tmpDatei = sys_get_temp_dir() . '/job_' . $pid . '_' . time() . '.tmp';
file_put_contents($tmpDatei, "Verarbeitungsdaten...");
echo "Temporäre Datei: $tmpDatei" . PHP_EOL;
// Aufräumen
unlink($tmpDatei);
// Wichtig · Fallstricke
Plattformabhängigkeit: Die POSIX-Erweiterung steht nur auf Unix-ähnlichen Betriebssystemen zur Verfügung. Auf Windows-Systemen ist posix_getpid() nicht verfügbar. Für plattformübergreifenden Code kann alternativ getmypid() verwendet werden, das auf allen Plattformen funktioniert und ebenfalls die PID des aktuellen Prozesses zurückgibt.
Sicherheitshinweis bei PID-Dateien: Beim Arbeiten mit PID-Dateien sollten Verzeichnis-Berechtigungen sorgfältig gesetzt werden, um zu verhindern, dass unbefugte Benutzer die PID-Datei manipulieren und so das Prozessmanagement stören können.