PHP Conference Nagoya 2025

Options de contexte des sockets

Options de contexte des socketsListe des options de contexte des sockets

Description

Les options de contexte des sockets sont disponibles pour tous les gestionnaires fonctionnant via les sockets, comme tcp, http et ftp.

Options

bindto

Utilisé pour spécifier l'adresse IP (soit IPv4 ou IPv6), et/ou le numéro du port que PHP utilisera pour accéder au réseau. La syntaxe est ip:port pour les adresses IPv4, et [ip]:port pour les adresses IPv6. Le fait de définir l'IP ou le port à 0 permettra au système de choisir lui-même le port et/ou l'IP.

Note:

Vu que FTP crée 2 sockets de connexion lors d'une opération normale, le numéro du port ne peut être spécifié en utilisant cette option.

backlog

Utilisé pour limiter le nombre de connexions actives dans la liste d'attente du socket.

Note:

Ceci n'est applicable qu'à la fonction stream_socket_server().

ipv6_v6only

Substitue le système d'exploitation par défaut concernant le mappage d'IPv4 dans IPv6.

Note:

Ceci est important en particulier lorsque vous essayez d'écouter sur les adresses IPv4 séparément alors qu'il existe une liaison sur [::].

Ceci n'est applicable qu'à la fonction stream_socket_server().

so_reuseport

Permet plusieurs liaisons d'une même paire ip:port, même à partir de processus distinct.

Note:

Ceci n'est applicable qu'à la fonction stream_socket_server().

so_broadcast

Permet d'envoyer et de recevoir des données vers/à partir d'adresses de diffusion.

Note:

Ceci n'est applicable qu'à la fonction stream_socket_server().

tcp_nodelay

Mettre la valeur a true définira SOL_TCP,NO_DELAY=1 correctement, ce qui désactivera l'algorithme TCP Nagle.

Historique

Version Description
7.1.0 Ajout du paramètre tcp_nodelay.
7.0.1 Ajout du paramètre ipv6_v6only.

Exemples

Exemple #1 Exemple d'utilisation du paramètre bindto

<?php
// Connexion à Internet en utilisant l'IP '192.168.0.100'
$opts = array(
'socket' => array(
'bindto' => '192.168.0.100:0',
),
);


// Connexion à Internet en utilisant l'IP '192.168.0.100' et le port '7000'
$opts = array(
'socket' => array(
'bindto' => '192.168.0.100:7000',
),
);


// Connexion à Internet en utilisant l'adresse IPv6 '2001:db8::1'
// et le port '7000'
$opts = array(
'socket' => array(
'bindto' => '[2001:db8::1]:7000',
),
);



// Connexion à Internet en utilisant le port '7000'
$opts = array(
'socket' => array(
'bindto' => '0:7000',
),
);


// Création du contexte...
$context = stream_context_create($opts);

// ...et l'utilise pour récupérer les données
echo file_get_contents('http://www.example.com', false, $context);

?>

add a note

User Contributed Notes 2 notes

up
9
mix at ater dot me
5 years ago
The right way for forcing IPv6 is 'bindto' => '[::]:0'
up
2
guru at jnt-finland dot fi
9 years ago
You can set "bindto" to "0:0" to force use IPv4 instead of IPv6. And probably "[0]:0" to force use IPv6, thou this I couldn't test.
To Top