Signatur
Beschreibung
getmypid() liefert die numerische Prozess-ID (PID) des PHP-Prozesses, der das aktuelle Skript ausführt. Diese ID wird vom Betriebssystem vergeben und identifiziert den Prozess eindeutig innerhalb des Systems zum jeweiligen Zeitpunkt.
Typische Einsatzbereiche sind das Erstellen eindeutiger temporärer Dateien oder Locks, das Logging von Prozessinformationen sowie das Debuggen und Monitoring von PHP-Prozessen (z. B. beim Einsatz von PHP-FPM oder CLI-Skripten). In Kombination mit einer Prozessverwaltung (z. B. posix_kill()) lässt sich der eigene Prozess gezielt ansprechen.
Wichtig: Bei Webanfragen über einen Webserver (z. B. Apache mit mod_php) teilen sich mehrere Anfragen möglicherweise denselben Prozess, weshalb die PID allein keine global eindeutige Anfrage-ID darstellt. Für CLI-Skripte und Daemon-Prozesse ist getmypid() hingegen sehr zuverlässig nutzbar.
Rückgabewert
int zurück. Bei einem Fehler oder wenn die PID nicht ermittelt werden kann, wird false zurückgegeben.Beispiele
Prozess-ID ausgeben
<?php
$pid = getmypid();
echo "Die aktuelle Prozess-ID ist: " . $pid . PHP_EOL;
Temporäre Lock-Datei mit PID erstellen
<?php
$pid = getmypid();
$lockFile = sys_get_temp_dir() . '/myscript_' . $pid . '.lock';
if (file_put_contents($lockFile, $pid) !== false) {
echo "Lock-Datei erstellt: $lockFile" . PHP_EOL;
// ... Verarbeitungslogik ...
unlink($lockFile);
echo "Lock-Datei entfernt." . PHP_EOL;
} else {
echo "Fehler beim Erstellen der Lock-Datei." . PHP_EOL;
}
PID in ein PID-File schreiben (CLI-Daemon-Muster)
<?php
$pidFile = '/var/run/meinscript.pid';
$pid = getmypid();
file_put_contents($pidFile, $pid);
echo "Prozess gestartet mit PID $pid. PID-Datei: $pidFile" . PHP_EOL;
// Simulierte Arbeit
sleep(1);
unlink($pidFile);
echo "Prozess beendet, PID-Datei gelöscht." . PHP_EOL;
// Wichtig · Fallstricke
Sicherheitshinweis: Die PID sollte nicht als einziges Merkmal zur Authentifizierung oder zur Erzeugung kryptografisch sicherer eindeutiger IDs verwendet werden. PIDs werden vom Betriebssystem recycelt, sobald ein Prozess beendet wird – eine spätere Anfrage könnte dieselbe PID erhalten.
Unter Windows kann getmypid() je nach Konfiguration und Ausführungsumgebung false zurückliefern. Für plattformübergreifenden Code empfiehlt sich eine entsprechende Prüfung des Rückgabewerts.