Start · Sprachen · PHP · Referenz · ssh2_keepalive_config

ssh2_keepalive_config

Funktion

Konfiguriert die Keepalive-Einstellungen einer SSH2-Verbindung, einschließlich Intervall und ob eine Antwort erwartet wird.

Kategorie: http

Signatur

ssh2_keepalive_config(resource $session, bool $want_reply, int $interval): bool

Beschreibung

ssh2_keepalive_config legt fest, wie häufig und auf welche Weise Keepalive-Nachrichten über eine bestehende SSH2-Verbindung gesendet werden. Mit dieser Funktion kann verhindert werden, dass eine inaktive SSH-Verbindung vom Server oder einer Firewall wegen Inaktivität getrennt wird.

Der Parameter want_reply steuert, ob die gesendeten Keepalive-Pakete eine Antwort vom Server erfordern. Wenn true übergeben wird, sendet der Client ein Paket und erwartet eine Antwort; dadurch lässt sich feststellen, ob die Verbindung noch aktiv ist. Mit false werden Keepalive-Pakete ohne Antworterwartung gesendet (fire-and-forget).

Das Intervall interval gibt die Zeit in Sekunden an, die zwischen zwei Keepalive-Nachrichten vergehen soll. Ein niedriger Wert hält die Verbindung zuverlässiger offen, erzeugt aber auch mehr Netzwerk-Overhead. Typische Werte liegen zwischen 10 und 60 Sekunden.

Diese Funktion ist Teil der SSH2-Erweiterung (ext/ssh2) und setzt eine aktive Verbindungsressource voraus, die z. B. mit ssh2_connect erzeugt wurde.

Parameter

Name Typ Default Beschreibung
$session Pflicht resource Eine aktive SSH2-Verbindungsressource, wie sie von ssh2_connect zurückgegeben wird.
$want_reply Pflicht bool Gibt an, ob der Server auf die Keepalive-Pakete antworten soll. true erwartet eine Antwort (zuverlässigere Verbindungsprüfung), false sendet ohne Antworterwartung.
$interval Pflicht int Zeitabstand in Sekunden zwischen zwei Keepalive-Nachrichten. Ein Wert von 0 deaktiviert das Keepalive.

Rückgabewert

Typ
bool
Beschreibung
Gibt true zurück, wenn die Keepalive-Konfiguration erfolgreich gesetzt wurde, andernfalls false.

Beispiele

SSH-Verbindung mit Keepalive konfigurieren

<?php
$session = ssh2_connect('example.com', 22);
if (!$session) {
    die('Verbindung fehlgeschlagen');
}

if (!ssh2_auth_password($session, 'benutzer', 'geheimesPasswort')) {
    die('Authentifizierung fehlgeschlagen');
}

// Keepalive alle 30 Sekunden senden, Antwort wird erwartet
if (ssh2_keepalive_config($session, true, 30)) {
    echo 'Keepalive erfolgreich konfiguriert.' . PHP_EOL;
} else {
    echo 'Keepalive-Konfiguration fehlgeschlagen.' . PHP_EOL;
}

// Langläufige Operation ...
sleep(60);

$stream = ssh2_exec($session, 'uptime');
stream_set_blocking($stream, true);
echo stream_get_contents($stream);
Keepalive erfolgreich konfiguriert.

Keepalive ohne Antworterwartung mit kurzem Intervall

<?php
$session = ssh2_connect('backup-server.local', 22);
ssh2_auth_agent($session, 'deploy-user');

// Keepalive alle 15 Sekunden, keine Antwort nötig
ssh2_keepalive_config($session, false, 15);

echo 'Keepalive (fire-and-forget) gesetzt.' . PHP_EOL;

// Weiterer SSH-Workflow ...
$sftp = ssh2_sftp($session);
$remoteFile = 'ssh2.sftp://' . intval($sftp) . '/var/log/syslog';
echo file_get_contents($remoteFile);
Keepalive (fire-and-forget) gesetzt.

// Wichtig · Fallstricke

Wichtig: ssh2_keepalive_config konfiguriert das Keepalive nur für zukünftige Pakete – es muss ggf. in Verbindung mit ssh2_keepalive_send verwendet werden, um die Pakete tatsächlich manuell zu versenden, falls die Erweiterung kein automatisches Senden übernimmt.

Stellen Sie sicher, dass die PHP-Erweiterung ssh2 (PECL) installiert und aktiviert ist. Die Verfügbarkeit dieser Funktion hängt von der installierten Version der Erweiterung ab; in älteren Versionen kann sie fehlen.

Ein zu kleines Intervall kann zu erhöhtem Netzwerktraffic führen und auf manchen Servern als verdächtig eingestuft werden. Werte zwischen 20 und 60 Sekunden sind in der Praxis üblich.