CakeFest 2024: The Official CakePHP Conference

Opções de contexto de Socket

Opções de contexto de SocketLista de opções de contexto de Socket

Descrição

As opções de contextos para Socket estão disponível em todos os empacotadores que trabalham em sockets, como tcp, http e ftp.

Opções

bindto

Utilizado para especificar o endereço IP (tanto IPv4 quanto IPv6) e/ou o número da porta que o PHP usará para acessar a rede. A sintaxe é ip:port para endereços IPv4, e [ip]:port para endereços IPv6. Definir o IP ou a porta com 0 fará com que o sistema escolha o IP e/ou a porta.

Nota:

Como o FTP cria duas conexões socket durante sua operação normal, o número da porta não poderá ser especificado ao se usar esta opção.

backlog

Utilizado para limitar o número de conexões excedentes na fila de escuta do socket.

Nota:

Este parâmetro só é aplicável na função stream_socket_server().

ipv6_v6only

Sobrescreve a diretiva do sistema operacional no que se refere ao mapeamento IPv4 em IPv6.

Nota:

Isto é importante quando tentando ouvir em um endereço IPv4 separadamente da existência de um binding em [::].

Somente aplicável em stream_socket_server().

so_reuseport

Permite várias bindings no mesmo IP:porta, mesmo de processos separados.

Nota:

Somente aplicável em stream_socket_server().

so_broadcast

Permite enviar e receber dados de/para endereços de broadcast.

Nota:

Somente aplicável a stream_socket_server().

tcp_nodelay

Ao ativar essa opção com true será configurado SOL_TCP,NO_DELAY=1, de forma a desabilitar o algorítimo Nagle TCP.

Registro de Alterações

Versão Descrição
7.1.0 Adicionado o parâmetro tcp_nodelay.
7.0.1 Adicionado o parâmetro ipv6_v6only.

Exemplos

Exemplo #1 Exemplo básico de uso do parâmetro bindto

<?php
// connect to the internet using the '192.168.0.100' IP
$opts = array(
'socket' => array(
'bindto' => '192.168.0.100:0',
),
);


// connect to the internet using the '192.168.0.100' IP and port '7000'
$opts = array(
'socket' => array(
'bindto' => '192.168.0.100:7000',
),
);


// connect to the internet using the '2001:db8::1' IPv6 address
// and port '7000'
$opts = array(
'socket' => array(
'bindto' => '[2001:db8::1]:7000',
),
);


// connect to the internet using port '7000'
$opts = array(
'socket' => array(
'bindto' => '0:7000',
),
);


// create the context...
$context = stream_context_create($opts);

// ...and use it to fetch the data
echo file_get_contents('http://www.example.com', false, $context);

?>

add a note

User Contributed Notes 2 notes

up
10
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
8 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