CLOSE |
Fermer |
PHP 4.0.2 à 4.0.6 |
Syntaxe
Paramètres
Nom |
Description |
$socket |
Ce paramètre permet d'indiquer la ressource du socket. |
Retour
Valeur |
Description |
FALSE |
Cette valeur permet d'indiquer qu'une erreur s'est produite. |
TRUE |
Cette valeur permet d'indiquer que l'opération s'est correctement effectué. |
Description
Cette fonction permet de fermer une ressource d'un socket précédemment ouvert. Cette fonction est obsolète,
elle a été remplacé par la fonction socket_close.
Remarques
- Ancien nom de socket_close : Dans les versions 4.0.2 à 4.0.6 de PHP, la fonction s'appelait simplement close et permettait de fermer une connexion socket.
Ce choix de nom était problématique car il pouvait entrer en conflit avec d'autres fonctions, notamment en cas d'extensions tierces ou d'interactions avec des bibliothèques
externes.
- Conflit potentiel avec d'autres fonctions système : Le nom close étant très générique, il risquait de poser des problèmes avec des extensions ou des bibliothèques
natives (comme les fonctions système en C). Ce conflit a été une des raisons pour lesquelles PHP a renommé cette fonction en socket_close à partir de PHP 4.1.0.
- Libération des ressources réseau : Lorsqu'un socket était ouvert avec fsockopen ou socket_create, il était important d'appeler close
pour fermer proprement la connexion. Oublier de fermer un socket pouvait entraîner une consommation excessive des ressources réseau, pouvant potentiellement atteindre la
limite de connexions ouvertes.
- Incompatibilité ascendante dans les versions ultérieures : Les scripts écrits en PHP 4.0.2-4.0.6 utilisant close devaient être mis à jour pour utiliser
socket_close à partir de PHP 4.1.0. Cette modification pouvait causer des erreurs undefined function close() si le code n'était pas corrigé après la mise à jour
de PHP.
- Effet immédiat sur le socket : L'appel à close terminait immédiatement la connexion réseau associée au socket. Cela signifiait que toute donnée non envoyée ou
non reçue pouvait être perdue si la fermeture était effectuée trop tôt dans le script, nécessitant parfois des vérifications supplémentaires.
- Impact sur les sockets bloquants et non bloquants : Sur un socket en mode bloquant, la fermeture avec close arrêtait immédiatement toute opération en
attente. En mode non bloquant, cela pouvait entraîner des erreurs de communication si la fermeture survenait alors que des données étaient encore en transit.
- Comportement dépendant du système d'exploitation : La manière dont close fermait un socket dépendait du système sous-jacent. Sous certains systèmes
Unix, la fermeture pouvait être différée jusqu'à ce que tous les tampons réseau soient vidés, alors que sous
Windows, elle était souvent immédiate. Cette différence pouvait causer des comportements inattendus entre serveurs
Linux et Windows.
- Transition vers socket_close et améliorations : Avec l'introduction de socket_close, PHP a clarifié la gestion des sockets en regroupant les fonctions associées
sous le préfixe socket_. Cela a amélioré la lisibilité du code et évité les confusions, rendant la gestion des sockets plus cohérente avec les autres extensions PHP.
Dernière mise à jour : Mercredi, le 25 mars 2015