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