Zum Inhalt springen

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

php
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
<?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?

Finden Sie das nützlich?

Dual-run-Vorschau — vergleichen Sie mit den Symfony-Routen live.