(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));
?>