Signatur
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
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);
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);
}
}
// 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.