Funzione PHP fsockopen(): Tutto Quello che Devi Sapere
Scopri la funzione PHP fsockopen() per stabilire connessioni di rete TCP/IP, con sintassi, parametri ed esempi pratici per sviluppatori PHP.
Come sviluppatore PHP, potresti dover stabilire una connessione di rete e comunicare con un altro server utilizzando il protocollo TCP/IP. La funzione fsockopen() è un'utilità legacy per l'apertura di socket. Per le nuove applicazioni si preferisce stream_socket_client() o cURL. Questo articolo illustra la funzione legacy a scopo di riferimento e migrazione.
Che cos'è la funzione fsockopen()?
La funzione fsockopen() apre una connessione di rete TCP/IP verso un host e una porta specificati, consentendo l'invio e la ricezione di dati tramite puntatori a file.
Come utilizzare la funzione fsockopen()
Utilizzare la funzione fsockopen() è semplice. Ecco la sintassi:
Sintassi PHP
fsockopen($hostname, $port, &$errno, &$errstr, $timeout);La funzione accetta cinque parametri:
$hostname: Il nome dell'host o l'indirizzo IP del server.$port: Il numero di porta a cui connettersi.&$errno: Una variabile che memorizza il numero di errore, se presente.&$errstr: Una variabile che memorizza il messaggio di errore, se presente.$timeoutfsockopen()utilizza il valore di configurazionedefault_socket_timeoutdistream_socket_client()tramite l'impostazioneinise omesso.
Nota: Per le connessioni sicure, aggiungi il prefisso
ssl://otls://al nome dell'host (ad esempiotls://example.com).
Ecco un esempio di utilizzo della funzione fsockopen() per stabilire una connessione di rete con un server e inviare/ricevere dati:
Esempio di utilizzo
<?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 questo esempio, utilizziamo la funzione fsockopen() per connetterci a example.com e recuperare la risposta HTTP riga per riga usando la funzione fgets() .
Nota: Per le richieste HTTPS, utilizza il prefisso
tls://nella variabile$host.
Conclusione
Sebbene fsockopen() sia ancora disponibile, si consiglia di utilizzare stream_socket_client() o cURL per i nuovi progetti. Questo riferimento rimane utile per la manutenzione dei codici legacy.