Start · Sprachen · PHP · Referenz · socket_getopt

socket_getopt

Funktion

Alias von <code>socket_get_option()</code> — liest eine Socket-Option aus.

seit PHP 4.3.0 Kategorie: http

Signatur

socket_getopt(Socket $socket, int $level, int $optname): mixed

Beschreibung

socket_getopt() ist ein direkter Alias der Funktion socket_get_option() und verhält sich identisch zu dieser. Sie liest den aktuellen Wert einer Option für einen gegebenen Socket.

Die Optionen werden auf zwei Ebenen (Level) konfiguriert: auf Socket-Ebene (SOL_SOCKET) und auf Protokoll-Ebene (z. B. SOL_TCP oder IPPROTO_IP). Mit dem Parameter optname wählt man die konkrete Option aus, z. B. SO_REUSEADDR, SO_KEEPALIVE oder SO_RCVBUF.

Der Rückgabewert ist je nach Option ein Integer, ein Boolean oder ein assoziatives Array (z. B. bei SO_LINGER). Bei einem Fehler wird false zurückgegeben; der Fehlercode lässt sich dann mit socket_last_error() abfragen.

Da socket_getopt() lediglich ein Alias ist, empfiehlt es sich, bevorzugt socket_get_option() zu verwenden, um den Code eindeutig und zukunftssicher zu halten.

Parameter

Name Typ Default Beschreibung
$socket Pflicht Socket Eine gültige Socket-Ressource (ab PHP 8.0 ein Socket-Objekt), die zuvor mit socket_create() erzeugt wurde.
$level Pflicht int Die Protokollebene, auf der die Option gilt. Typische Werte: SOL_SOCKET für allgemeine Socket-Optionen, SOL_TCP für TCP-spezifische Optionen oder IPPROTO_IP für IP-Optionen.
$optname Pflicht int Der Name der auszulesenden Option, z. B. SO_REUSEADDR, SO_KEEPALIVE, SO_RCVBUF, SO_SNDBUF oder SO_LINGER.

Rückgabewert

Typ
mixed
Beschreibung
Gibt den Wert der angeforderten Option zurück. Der Typ hängt von der Option ab: meist int, bei manchen Optionen (z. B. SO_LINGER) ein assoziatives array. Bei einem Fehler wird false zurückgegeben.

Beispiele

Puffergröße eines Sockets auslesen

<?php
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket === false) {
    die('socket_create() fehlgeschlagen: ' . socket_strerror(socket_last_error()));
}

// Empfangspuffergröße auslesen
$rcvbuf = socket_getopt($socket, SOL_SOCKET, SO_RCVBUF);
if ($rcvbuf === false) {
    echo 'Fehler: ' . socket_strerror(socket_last_error($socket));
} else {
    echo 'Empfangspuffergröße: ' . $rcvbuf . ' Bytes' . PHP_EOL;
}

socket_close($socket);
Empfangspuffergröße: 131072 Bytes

SO_LINGER-Option auslesen (assoziatives Array)

<?php
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket === false) {
    die('socket_create() fehlgeschlagen: ' . socket_strerror(socket_last_error()));
}

// SO_LINGER auslesen — Rückgabe als assoziatives Array
$linger = socket_getopt($socket, SOL_SOCKET, SO_LINGER);
if ($linger === false) {
    echo 'Fehler: ' . socket_strerror(socket_last_error($socket));
} else {
    echo 'Linger aktiv: '   . ($linger['l_onoff']  ? 'ja' : 'nein') . PHP_EOL;
    echo 'Linger-Zeit: '    . $linger['l_linger'] . ' Sekunden'     . PHP_EOL;
}

socket_close($socket);
Linger aktiv: nein Linger-Zeit: 0 Sekunden

// Wichtig · Fallstricke

Alias: socket_getopt() ist ein Alias von socket_get_option(). Es wird empfohlen, direkt socket_get_option() zu verwenden, da Aliase in zukünftigen PHP-Versionen theoretisch entfernt werden könnten.

Erweiterung erforderlich: Die Funktion setzt die PHP-Erweiterung ext/sockets voraus. Diese muss beim Kompilieren mit --enable-sockets aktiviert worden sein oder als dynamische Erweiterung geladen sein.

Betriebssystemabhängigkeit: Welche Optionen tatsächlich verfügbar sind, hängt vom Betriebssystem und der Netzwerkimplementierung ab. Nicht alle Optionen stehen auf allen Plattformen zur Verfügung.