Opciones de contexto de los sockets — Lista de opciones de contexto de los sockets
Las opciones de contexto de los sockets están disponibles para todos los gestores que funcionan a través de los sockets, como
tcp, http y
ftp.
bindto
Utilizado para especificar la dirección IP (ya sea IPv4 o IPv6), y/o
el número del puerto que PHP utilizará para acceder a la red.
La sintaxis es ip:puerto para las direcciones IPv4,
y [ip]:puerto para las direcciones IPv6.
El hecho de definir la IP o el puerto a 0 permitirá
al sistema elegir el puerto y/o la IP por sí mismo.
Nota:
Dado que FTP crea 2 sockets de conexión durante una operación normal, el número del puerto no puede ser especificado utilizando esta opción.
backlogUtilizado para limitar el número de conexiones activas en la lista de espera del socket.
Nota:
Esto solo es aplicable a la función stream_socket_server() .
ipv6_v6onlySustituye el sistema operativo por defecto en cuanto al mapeo de IPv4 en IPv6.
Nota:
Esto es importante en particular cuando se intenta escuchar en las direcciones IPv4 por separado mientras existe una ligadura en
[::].Esto solo es aplicable a la función stream_socket_server() .
so_reuseportPermite múltiples ligaduras de una misma pareja ip:puerto, incluso desde procesos distintos.
Nota:
Esto solo es aplicable a la función stream_socket_server() .
so_broadcastPermite enviar y recibir datos hacia/desde direcciones de difusión.
Nota:
Esto solo es aplicable a la función stream_socket_server() .
tcp_nodelay
Poner el valor a true definirá SOL_TCP,NO_DELAY=1
correctamente, lo que desactivará el algoritmo TCP Nagle.
| Versión | Descripción |
|---|---|
| 7.1.0 |
Adición del parámetro tcp_nodelay.
|
| 7.0.1 |
Adición del parámetro ipv6_v6only.
|
Ejemplo #1 Ejemplo de uso del parámetro bindto
<?php
// Conexión a Internet utilizando la IP '192.168.0.100'
$opts = array(
'socket' => array(
'bindto' => '192.168.0.100:0',
),
);
// Conexión a Internet utilizando la IP '192.168.0.100' y el puerto '7000'
$opts = array(
'socket' => array(
'bindto' => '192.168.0.100:7000',
),
);
// Conexión a Internet utilizando la dirección IPv6 '2001:db8::1'
// y el puerto '7000'
$opts = array(
'socket' => array(
'bindto' => '[2001:db8::1]:7000',
),
);
// Conexión a Internet utilizando el puerto '7000'
$opts = array(
'socket' => array(
'bindto' => '0:7000',
),
);
// Creación del contexto...
$context = stream_context_create($opts);
// ...y se utiliza para recuperar los datos
echo file_get_contents('http://www.example.com', false, $context);
?>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.