Start · Sprachen · PHP · Referenz · pg_service

pg_service

Funktion

Gibt den Servicenamen zurück, der beim Aufbau einer PostgreSQL-Verbindung verwendet wurde.

seit PHP 8.1.0 Kategorie: db

Signatur

pg_service(PgSql\Connection $connection): string

Beschreibung

pg_service() liefert den Namen des PostgreSQL-Dienstes (Service), der beim Verbindungsaufbau über eine Service-Datei (pg_service.conf) angegeben wurde. Dienste ermöglichen es, Verbindungsparameter zentral in einer Konfigurationsdatei zu verwalten, anstatt sie direkt im Quellcode zu hinterlegen.

Service-Einträge werden in der Datei ~/.pg_service.conf (benutzerspezifisch) oder in der systemweiten Service-Datei definiert und über den Parameter service=NAME in der Verbindungszeichenkette referenziert. Wurde kein Dienst verwendet, gibt die Funktion eine leere Zeichenkette zurück.

Die Funktion ist nützlich bei der Fehlerdiagnose oder beim Logging, um nachzuvollziehen, über welchen konfigurierten Dienst eine Datenbankverbindung hergestellt wurde – besonders wenn eine Anwendung mehrere verschiedene PostgreSQL-Verbindungen verwaltet.

Parameter

Name Typ Default Beschreibung
$connection Pflicht PgSql\Connection Eine aktive PostgreSQL-Verbindungsinstanz, wie sie von pg_connect() oder pg_pconnect() zurückgegeben wird.

Rückgabewert

Typ
string
Beschreibung
Der Name des PostgreSQL-Dienstes als Zeichenkette. Wurde beim Verbindungsaufbau kein Dienst verwendet, wird eine leere Zeichenkette zurückgegeben.

Beispiele

Servicenamen einer Verbindung ermitteln

<?php
// Verbindungsaufbau über einen benannten PostgreSQL-Dienst
// (erfordert einen Eintrag 'mein_dienst' in der pg_service.conf)
$conn = pg_connect('service=mein_dienst');

if ($conn === false) {
    die('Verbindung fehlgeschlagen.');
}

$service = pg_service($conn);

if ($service !== '') {
    echo 'Verbunden über Dienst: ' . $service . PHP_EOL;
} else {
    echo 'Kein Dienst verwendet.' . PHP_EOL;
}

pg_close($conn);
Verbunden über Dienst: mein_dienst

Verbindungsdiagnose beim Verwalten mehrerer Verbindungen

<?php
$verbindungen = [
    pg_connect('service=lese_dienst'),
    pg_connect('service=schreib_dienst'),
];

foreach ($verbindungen as $index => $conn) {
    if ($conn !== false) {
        $service = pg_service($conn);
        echo sprintf(
            'Verbindung %d verwendet Dienst: %s%s',
            $index + 1,
            $service !== '' ? $service : '(kein Dienst)',
            PHP_EOL
        );
    }
}

foreach ($verbindungen as $conn) {
    if ($conn !== false) {
        pg_close($conn);
    }
}
Verbindung 1 verwendet Dienst: lese_dienst Verbindung 2 verwendet Dienst: schreib_dienst

// Wichtig · Fallstricke

Verfügbarkeit: Die Funktion gibt einen bedeutsamen Wert nur dann zurück, wenn die Verbindung tatsächlich über das service=-Schlüsselwort in der Verbindungszeichenkette aufgebaut wurde. Bei direkter Angabe von Host, Port, Datenbank usw. wird eine leere Zeichenkette zurückgegeben.

Die Service-Datei pg_service.conf enthält sensible Verbindungsdaten. Achten Sie darauf, dass die Datei nur für berechtigte Benutzer lesbar ist (Unix-Dateiberechtigung 0600), um unbefugten Zugriff auf Verbindungsparameter zu verhindern.