Signatur
Beschreibung
pg_get_pid() liefert die Prozess-ID (PID) des PostgreSQL-Backend-Prozesses, der auf dem Datenbankserver für die übergebene Verbindung läuft. Jede Verbindung zu einem PostgreSQL-Server wird serverseitig durch einen eigenen Prozess bedient, dessen PID mit dieser Funktion abgefragt werden kann.
Die zurückgegebene PID ist nützlich, um z. B. mit pg_cancel_query() gezielt Abfragen auf einer bestimmten Verbindung abzubrechen oder um Verbindungen auf dem Datenbankserver in der Systemtabelle pg_stat_activity zu identifizieren und zu überwachen.
Typische Anwendungsfälle sind die Diagnose von Verbindungsproblemen, das Monitoring laufender Datenbankprozesse sowie das gezielte Beenden oder Kontrollieren von Backend-Prozessen über PostgreSQL-Administrationsfunktionen wie pg_terminate_backend(pid) direkt im SQL-Layer.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $connection Pflicht | PgSql\Connection | Eine aktive PostgreSQL-Verbindungsressource, die mit pg_connect() oder pg_pconnect() erzeugt wurde. |
Rückgabewert
Beispiele
PID des Backend-Prozesses ausgeben
<?php
$conn = pg_connect('host=localhost dbname=testdb user=postgres password=secret');
if (!$conn) {
die('Verbindung fehlgeschlagen.');
}
$pid = pg_get_pid($conn);
echo "PID des PostgreSQL-Backend-Prozesses: " . $pid . PHP_EOL;
pg_close($conn);
?>
Verbindung in pg_stat_activity identifizieren
<?php
$conn = pg_connect('host=localhost dbname=testdb user=postgres password=secret');
if (!$conn) {
die('Verbindung fehlgeschlagen.');
}
$pid = pg_get_pid($conn);
echo "Eigene Backend-PID: $pid" . PHP_EOL;
// Verbindungsinfo aus pg_stat_activity abrufen
$result = pg_query($conn, "SELECT pid, usename, application_name, state FROM pg_stat_activity WHERE pid = $pid");
if ($row = pg_fetch_assoc($result)) {
echo "User: {$row['usename']}, App: {$row['application_name']}, Status: {$row['state']}" . PHP_EOL;
}
pg_close($conn);
?>
// Wichtig · Fallstricke
Sicherheitshinweis: Die PID sollte niemals direkt und ungeprüft in SQL-Abfragen eingesetzt werden. Obwohl es sich um einen Integer-Wert handelt, der von PHP intern verwaltet wird, empfiehlt sich zur Sicherheit immer die Verwendung von intval() oder parametrisierten Abfragen, wenn die PID in dynamischen SQL-Anweisungen genutzt wird.
Ab PHP 8.1 ist der Parameter $connection vom Typ PgSql\Connection (Objekt) statt der zuvor verwendeten Ressource. Älterer Code, der eine Ressource übergab, muss entsprechend angepasst werden.