(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)
socket_get_option — Lit les options du socket
socket_get_option() récupère la valeur de l'option spécifiée par le paramètre option
pour le socket spécifié par le paramètre socket
.
socket
Une instance de Socket créée par socket_create() ou socket_accept().
level
Le paramètre level
spécifie la couche de protocole de l'option. Par exemple, pour connaître les options de la couche socket, la valeur SOL_SOCKET
du paramètre level
sera utilisée. Les autres degrés, comme TCP
, peuvent être utilisés en spécifiant le numéro du protocole de cette couche. Les numéros de protocoles peuvent être trouvés en utilisant la fonction getprotobyname().
option
Option | Description | Type |
---|---|---|
SO_DEBUG | Reporte si les informations de débogage sont enregistrées ou pas. | int |
SO_BROADCAST | Reporte si la transmission des annonces globales est supportée ou pas. | int |
SO_REUSEADDR | Indique si les adresses locales peuvent être réutilisées ou pas. | int |
SO_REUSEPORT | Indique si les ports locaux peuvent être réutilisés. | int |
SO_KEEPALIVE | Reporte si les connexions sont persistantes avec des transmissions périodiques de messages ou pas. Si le socket connecté échoue en réponse à ces messages, la connexion est interrompue et le processus écrira sur ce socket une notification avec un signal SIGPIPE. | int |
SO_LINGER | Reporte si le socket Si l_onoff ne vaut pas zéro et que l_linger vaut zéro, toutes les données qui n'ont pas encore été envoyées seront annulées et RST (réinitialisation) sera envoyé dans le cas d'une connexion orientée socket. D'un autre côté, si l_onoff ne vaut pas zéro et l_linger ne vaut pas zéro, socket_close() bloquera tant que les données non envoyées ne le seront pas ou pendant le temps spécifié par l_linger. Si le socket est non-bloquant, socket_close() échouera et retournera une erreur. | array. Le tableau contiendra 2 clés : l_onoff et l_linger. |
SO_OOBINLINE | Reporte si le socket socket part sur des données en ligne out-of-band ou pas. | int |
SO_SNDBUF | Reporte les informations sur la taille du tampon envoyé. | int |
SO_RCVBUF | Reporte les informations sur la taille du tampon reçu. | int |
SO_ERROR | Reporte les informations sur le statut de l'erreur et le vide. | int (ne peut être défini par la fonction socket_set_option()) |
SO_TYPE | Reporte le type de le socket socket (e.g. SOCK_STREAM ). | int (ne peut être défini par la fonction socket_set_option()) |
SO_DONTROUTE | Reporte si les messages sortants dévient les équipements standard de cheminement. | int |
SO_RCVLOWAT | Reporte le nombre minimal d'octets au processus pour les opérations entrantes sur le socket socket . | int |
SO_RCVTIMEO | Reporte la valeur du délai d'exécution pour les opérations entrantes. | array. Le tableau contiendra 2 clés : sec qui est la partie représentant les secondes de la valeur du délai d'attente et usec qui est la partie représentant les microsecondes. |
SO_SNDTIMEO | Reporte la valeur du délai d'exécution spécifiant le temps maximal d'exécution pour les fonctions sortantes bloquantes parce que la commande d'écoulement empêche des données d'être envoyé. | array. Le tableau contiendra 2 clés : secqui est la partie représentant les secondes de la valeur du délai d'attente et usec qui est la partie représentant les microsecondes. |
SO_SNDLOWAT | Reporte le nombre minimal d'octets au processus pour les opérations sortantes sur le socket socket . | int |
TCP_NODELAY | Indique si l'algorithme Nagle TCP est désactivé. | int |
MCAST_JOIN_GROUP | Joint un groupe multicast. | Un tableau avec une clé "group" , spécifiant une chaîne de caractères avec les adresses multicast IPv4 ou IPv6 et une clé "interface" , spécifiant soit un numéro d'interface (de type int), soit une chaîne de caractères avec le nom de l'interface, comme "eth0" . 0 peut être spécfié pour indiquer que l'interface doit être sélectionné en utilisant les règles de routage (ne peut être utilisé qu'avec la fonction socket_set_option()). |
MCAST_LEAVE_GROUP | Quitte un groupe multicast. | Un tableau. Voir la constante MCAST_JOIN_GROUP pour plus d'informations (ne peut être utilisé qu'avec la fonction socket_set_option()). |
MCAST_BLOCK_SOURCE | Paquets de bloc arrivant depuis une source spécifique vers un groupe multicast spécifique, qui aura du être joint auparavant. | Un tableau contenant les mêmes clés que celles de la constante MCAST_JOIN_GROUP , avec une clé supplémentaire source , lié à une chaîne de caractère spécifiant une adresse IPv4 ou IPv6 de la source à bloquer (ne peut être utilisé qu'avec la fonction socket_set_option()). |
MCAST_UNBLOCK_SOURCE | Débloque (recommence à recevoir) les paquets arrivant depuis une source spécifique vers un groupe multicast spécifique, qui aura dû être joins auparavant. | Un tableau au même format que celui de la constante MCAST_BLOCK_SOURCE (ne peut être utilisé qu'avec la fonction socket_set_option()). |
MCAST_JOIN_SOURCE_GROUP | Reçoit des paquets destinés à un groupe multicast spécifique dont l'adresse source correspond à une valeur spécifique. | Un tableau au même format que celui de la constante MCAST_BLOCK_SOURCE (ne peut être utilisé qu'avec la fonction socket_set_option()). |
MCAST_LEAVE_SOURCE_GROUP | Arrête de recevoir des paquets destinés à un groupe multicast spécifique dont l'adresse source correspond à une valeur spécifique. | Un tableau au même format que celui de la constante MCAST_BLOCK_SOURCE (ne peut être utilisé qu'avec la fonction socket_set_option()). |
IP_MULTICAST_IF | L'interface de sortie pour les paquets multicast IPv4. | Soit un entier spécifiant le numéro de l'interface, soit une chaîne de caractères représentant le nom de l'interface, par exemple, eth0 . La valeur 0 peut être utilisé pour indiquer la table de routage à utiliser dans la sélection de l'interface. La fonction socket_get_option() retourne un index d'interface. Notez que, contrairement à l'API C, cette option ne prend pas comme argument une adresse IP. Ceci élimine la différence d'interface entre les constantes IP_MULTICAST_IF et IPV6_MULTICAST_IF . |
IPV6_MULTICAST_IF | L'interface de sortie pour les paquets multicast IPv6. | Identique à la constante IP_MULTICAST_IF . |
IP_MULTICAST_LOOP | La politique de la boucle locale multicast pour les paquets IPv4 active ou désactive le bouclage des multidiffusions sortantes, qui doivent avoir été jointes auparavant. L'effet diffère cependant selon qu'il s'applique à Unix ou à Windows, le premier étant sur le chemin de réception tandis que le second sur le chemin d'envoi. | Un entier (soit 0 , soit 1 ). Pour la fonction socket_set_option(), n'importe quelle valeur sera acceptée et sera convertie en un booléen suivant les règles habituelles de PHP. |
IPV6_MULTICAST_LOOP | Identique à la constante IP_MULTICAST_LOOP , mais pour l'IPv6. | Un entier. Voir la constante IP_MULTICAST_LOOP . |
IP_MULTICAST_TTL | La durée de vie des paquets sortants multicast IPv4. Ce doit être une valeur comprise entre 0 (ne pas quitter l'interface) et 255. Par défaut, la valeur est à 1 (seul le réseau local est atteint). | Un entier entre 0 et 255. |
IPV6_MULTICAST_HOPS | Identique à la constante IP_MULTICAST_TTL , mais pour les paquets IPv6. La valeur -1 est également acceptée, signifiant que la route par défaut doit être utilisée. | Un entier compris entre -1 et 255. |
SO_MARK | Définit un identifiant sur le socket pour le but de filtrer les packets sur Linux. | int |
SO_ACCEPTFILTER | Ajoute un filtre d'acceptation sur le socket écouté (FreeBSD/NetBSD). Un module kernel de filtre d'acceptation doit d'abord être chargé sur FreeBSD (e.g. accf_http). | string name of the filter (length 15 max). |
SO_USER_COOKIE | Définit un identifiant sur le socket pour le but de filtrer les packets sur FreeBSD. | int |
SO_RTABLE | Définit un identifiant sur le socket pour le but de filtrer les packets sur OpenBSD. | int |
SO_DONTTRUNC | Conserve les données non lues. | int |
SO_WANTMORE | Fournit un indice quand plus de données sont prêtes. | int |
TCP_DEFER_ACCEPT | Ne pas notifier un socket qui écoute tant que les données ne sont pas prêtes. | int |
SO_INCOMING_CPU | Récupère/Définit l'affinité du cpu pour un socket. | int |
SO_MEMINFO | Récupère toute les meminfo d'un socket. | int |
SO_BPF_EXTENSIONS | Récupère les extensions BPF supportées par le kernel à attacher à un socket. | int |
SO_SETFIB | Définit la table de route (FIB) d'un socket. (FreeBSD uniquement) | int |
SOL_FILTER | Filtres attribués à un socket. (Solaris/Illumos uniquement) | int |
TCP_KEEPCNT | Définit le nombre maximal de sondes keepalive TCP devrait envoyer avant de lâcher la connexion. | int |
TCP_KEEPIDLE | Définit le temps que la connexion doit rester inactive. | int |
TCP_KEEPINTVL | Définit le temps entre les sondes keepalive individuelles. | int |
TCP_KEEPALIVE | Définit le temps que la connexion doit rester inactive. (macOS uniquement) | int |
TCP_NOTSENT_LOWAT | Définit le nombre limite de données non envoyées dans la file d'attente d'écriture par le flux de socket. (Linux uniquement) | int |
Retourne la valeur de l'option fournie, ou false
si une erreur survient.
Version | Description |
---|---|
8.0.0 | socket est désormais une instance de Socket ; auparavant, c'était une resource. |
Exemple #1 Exemple avec socket_get_option()
<?php
$socket = socket_create_listen(1223);
$linger = array('l_linger' => 1, 'l_onoff' => 1);
socket_set_option($socket, SOL_SOCKET, SO_LINGER, $linger);
var_dump(socket_get_option($socket, SOL_SOCKET, SO_REUSEADDR));
?>