PHP fsockopen()-Funktion: Alles, was Sie wissen müssen
Als PHP-Entwickler müssen Sie möglicherweise eine Netzwerkverbindung herstellen und mit einem anderen Server über das TCP/IP-Protokoll kommunizieren. Die `fsockopen()` Funktion wurde historisch für diesen Zweck verwendet. Hinweis: `fsockopen()` wurde in PHP 8.1 als veraltet markiert und in PHP 8.2 entfernt. Moderne PHP-Anwendungen sollten stattdessen `stream_socket_client()` oder cURL verwenden. Dieser Artikel erläutert die Legacy-Funktion zu Referenz- und Migrationszwecken.
Was ist die fsockopen()-Funktion?
Die `fsockopen()` Funktion öffnet eine TCP/IP-Netzwerkverbindung zu einem angegebenen Host und Port, sodass Daten über Dateizeiger gesendet und empfangen werden können.
So verwenden Sie die fsockopen()-Funktion
Die Verwendung der `fsockopen()` Funktion ist unkompliziert. Hier ist die Syntax:
PHP-Syntax
fsockopen($hostname, $port, &$errno, &$errstr, $timeout);Die Funktion akzeptiert fünf Parameter:
`$hostname`: Der Hostname oder die IP-Adresse des Servers.`$port`: Die Portnummer, mit der eine Verbindung hergestellt werden soll.`&$errno`: Eine Variable, die die Fehlernummer speichert, falls vorhanden.`&$errstr`: Eine Variable, die die Fehlermeldung speichert, falls vorhanden.`$timeout`: Der Verbindungs-Timeout in Sekunden. Fehlt dieser Parameter, wird standardmäßig die`ini`-Einstellung`default_socket_timeout`verwendet.
Hinweis: Für sichere Verbindungen fügen Sie dem Hostnamen das Präfix
`ssl://`oder`tls://`hinzu (z. B.`tls://example.com`).
Hier ist ein Beispiel dafür, wie Sie die `fsockopen()` Funktion verwenden können, um eine Netzwerkverbindung zu einem Server herzustellen und Daten zu senden/empfangen:
Beispielverwendung
<?php
$host = "example.com";
$port = 80;
$timeout = 30;
$fp = fsockopen($host, $port, $errno, $errstr, $timeout);
if (!$fp) {
echo "Error: $errstr ($errno)<br/>";
} else {
$out = "GET / HTTP/1.1\r\n";
$out .= "Host: $host\r\n";
$out .= "Connection: Close\r\n\r\n";
fwrite($fp, $out);
while (!feof($fp)) {
echo fgets($fp, 128);
}
fclose($fp);
}In diesem Beispiel verwenden wir die `fsockopen()` Funktion, um eine Netzwerkverbindung zum Server `example.com` am Port 80 herzustellen. Wir geben einen Timeout von 30 Sekunden für die Verbindung an. Wenn die Verbindung erfolgreich hergestellt wurde, senden wir eine HTTP-GET-Anfrage an den Server und empfangen die Antwort mit der `fgets()` Funktion.
Hinweis: Für HTTPS-Anfragen verwenden Sie
`tls://`als Protokollpräfix in der`$host`Variable.
Fazit
Obwohl `fsockopen()` eine Low-Level-TCP/IP-Kommunikation ermöglicht, ist sie in modernem PHP veraltet. Verwenden Sie für neue Projekte `stream_socket_client()` oder cURL. Diese Referenz bleibt dennoch nützlich für die Wartung von Legacy-Codebasen.
Praxis
Was macht die fsockopen-Funktion in PHP?