Start · Sprachen · PHP · Referenz · pg_get_pid

pg_get_pid

Funktion

Gibt die Prozess-ID (PID) des Backend-Serverprozesses zurück, der der angegebenen PostgreSQL-Verbindung zugeordnet ist.

seit PHP 5.6.0 Kategorie: db

Signatur

pg_get_pid(PgSql\Connection $connection): int

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

Typ
int
Beschreibung
Gibt die Prozess-ID (PID) des PostgreSQL-Backend-Prozesses als Ganzzahl zurück, der dieser Verbindung serverseitig zugeordnet ist.

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);
?>
PID des PostgreSQL-Backend-Prozesses: 12345

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);
?>
Eigene Backend-PID: 12345 User: postgres, App: , Status: idle

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