Fonction PHP fsockopen() : Tout ce que vous devez savoir
En tant que développeur PHP, vous devrez peut-être établir une connexion réseau et communiquer avec un autre serveur en utilisant le protocole TCP/IP. La fonction `fsockopen()` était historiquement utilisée à cette fin. Note : `fsockopen()` a été dépréciée dans PHP 8.1 et supprimée dans PHP 8.2. Les applications PHP modernes devraient utiliser `stream_socket_client()` ou cURL à la place. Cet article explique la fonction héritée à des fins de référence et de migration.
Qu'est-ce que la fonction fsockopen() ?
La fonction `fsockopen()` ouvre une connexion réseau TCP/IP vers un hôte et un port spécifiés, permettant d'envoyer et de recevoir des données via des pointeurs de fichier.
Comment utiliser la fonction fsockopen()
L'utilisation de la fonction `fsockopen()` est simple. Voici la syntaxe :
Syntaxe PHP
fsockopen($hostname, $port, &$errno, &$errstr, $timeout);La fonction accepte cinq paramètres :
`$hostname`: Le nom d'hôte ou l'adresse IP du serveur.`$port`: Le numéro de port auquel se connecter.`&$errno`: Une variable qui stocke le numéro d'erreur, le cas échéant.`&$errstr`: Une variable qui stocke le message d'erreur, le cas échéant.`$timeout`: Le délai d'expiration de la connexion en secondes. Par défaut, il utilise le paramètre`ini``default_socket_timeout`s'il est omis.
Note : Pour les connexions sécurisées, préfixez le nom d'hôte avec
`ssl://`ou`tls://`(par ex.,`tls://example.com`).
Voici un exemple d'utilisation de la fonction `fsockopen()` pour établir une connexion réseau avec un serveur et envoyer/recevoir des données :
Exemple d'utilisation
<?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);
}Dans cet exemple, nous utilisons la fonction `fsockopen()` pour établir une connexion réseau avec le serveur `example.com` sur le port 80. Nous spécifions un délai d'expiration de 30 secondes pour la connexion. Si la connexion est établie avec succès, nous envoyons une requête HTTP GET au serveur et recevons la réponse à l'aide de la fonction `fgets()`.
Note : Pour les requêtes HTTPS, utilisez
`tls://`comme préfixe de protocole dans la variable`$host`.
Conclusion
Bien que `fsockopen()` offre une communication TCP/IP de bas niveau, elle est désormais obsolète dans les versions modernes de PHP. Utilisez `stream_socket_client()` ou cURL pour les nouveaux projets. Cette référence reste utile pour la maintenance des bases de code héritées.
Pratique
Que fait la fonction fsockopen en PHP ?