Start · Sprachen · PHP · Referenz · posix_getpid

posix_getpid

Funktion

Gibt die Prozesskennung (PID) des aktuellen PHP-Prozesses zurück.

seit PHP 4.0.0 Kategorie: misc

Signatur

posix_getpid(): int

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

Typ
int
Beschreibung
Gibt die PID des aktuellen Prozesses als positive Ganzzahl zurück. Der Rückgabewert ist immer gültig und kann nicht fehlschlagen.

Beispiele

PID des aktuellen Prozesses ausgeben

<?php
$pid = posix_getpid();
echo "Aktuelle PID: " . $pid . PHP_EOL;
Aktuelle PID: 12345

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;
Daemon gestartet mit PID 12345. Daemon beendet.

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);
Temporäre Datei: /tmp/job_12345_1700000000.tmp

// 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.