SunshinePHP 2019 CFP Started

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.
7.0.0 Ajout du paramètre so_broadcast.
7.0.0 Ajout du paramètre so_reuseport.
5.3.3 Ajout du paramètre backlog.
5.1.0 Ajout du paramètre bindto.

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 add a note

User Contributed Notes 1 note

up
3
guru at jnt-finland dot fi
2 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