(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)
socket_get_option — Obtém opções para o soquete
A função socket_get_option() recupera o valor para
a opção especificado pelo parâmetro option
para
o soquete informado no parâmetro socket
.
socket
Uma instância de Socket criada com socket_create() ou socket_accept().
level
O parâmetro level
especifica o nível de
protocolo no qual a opção reside. Por exemplo, para recuperar opções no
nível do soquete, um parâmetro level
com valor
SOL_SOCKET
seria usado. Outros níveis, como
TCP
, podem ser usados
especificando o número do protocolo para aquele nível. Números de protocolo podem ser
encontrados usando a função getprotobyname().
option
Opção | Descrição | Tipo |
---|---|---|
SO_DEBUG |
Reporta se a informação de depuração está sendo gravada. | int |
SO_BROADCAST |
Reporta se a transmissão de mensagens de difusão é suportada. | int |
SO_REUSEADDR |
Reporta se os endereços locais podem ser reutilizados. | int |
SO_REUSEPORT |
Reporta se as portas locais podem ser reutilizadas. | int |
SO_KEEPALIVE |
Reporta se as conexões são mantidas ativas com transmissão periódicas de mensagens. Se o soquete conectado falhar em responder a essas mensagens, a conexão é quebrada e os processos escrevendo nesse soquete são notificados com um sinal SIGPIPE. | int |
SO_LINGER |
Informa se o soquete especificado em Se l_onoff for diferente de zero e l_linger for zero, todos os dados não enviados serão descartados e o RST (redefinição) será enviado ao par no caso de um soquete orientado a conexão. Por outro lado, se l_onoff for diferente de zero e l_linger for diferente de zero, socket_close() irá bloquear até que todos os dados sejam enviados ou que tenha passado o tempo especificado em l_linger. Se o soquete for não bloqueante, socket_close() falhará e retornará um erro. |
array. O array conterá duas chaves: l_onoff e l_linger. |
SO_OOBINLINE |
Reporta se o socket mantém os dados fora-de-banda em linha.
|
int |
SO_SNDBUF |
Reporta o tamanho do buffer de envio. | int |
SO_RCVBUF |
Reporta o tamanho do buffer de recebimento. | int |
SO_ERROR |
Relata informações sobre o status do erro e o limpa. | int (não pode ser definido por socket_set_option()) |
SO_TYPE |
Reporta o tipo do socket (ex.:
SOCK_STREAM ).
|
int (não pode ser definido por socket_set_option()) |
SO_DONTROUTE |
Informa se as mensagens de saída ignoram os recursos de roteamento padrão. | int |
SO_RCVLOWAT |
Informa o número mínimo de bytes a serem processados para operações de
entrada de socket .
|
int |
SO_RCVTIMEO |
Informa o valor do tempo limite para operações de entrada. | array. O array conterá duas chaves: sec que é a parte dos segundos no valor do tempo limite e usec que é a parte dos microssegundos do valor do tempo limite. |
SO_SNDTIMEO |
Informa o valor do tempo limite especificando a quantidade de tempo que uma função de saída bloqueia porque o controle de fluxo impede o envio de dados. | array. O array conterá duas chaves: sec que é a parte dos segundos no valor do tempo limite e usec que é a parte dos microssegundos do valor do tempo limite. |
SO_SNDLOWAT |
Informa o número mínimo de bytes a serem processados para operações de saída do socket .
|
int |
TCP_NODELAY |
Informa se o algoritmo Nagle TCP está desabilitado. | int |
MCAST_JOIN_GROUP |
Ingressa em um grupo "multicast". |
array com chaves "group" , especificando
uma string com um endereço "multicast" IPv4 ou IPv6 e
"interface" , especificando um número de
interface (tipo int) ou uma string com
o nome da interface, como "eth0" .
0 pode ser especificado para indicar que a interface
deve ser selecionada usando regras de roteamento. (só pode ser usada em
socket_set_option())
|
MCAST_LEAVE_GROUP |
Sai de um grupo "multicast". |
array. Veja MCAST_JOIN_GROUP para
mais informação. (só pode ser usada em
socket_set_option())
|
MCAST_BLOCK_SOURCE |
Bloqueia pacotes que chegam de uma origem específica para um grupo "multicast" específico, no qual deve-se ter ingressado previamente. |
array com as mesmas chaves de
MCAST_JOIN_GROUP , mais uma chave extra,
source , que mapeia a uma string
especificando um endereço IPv4 ou IPv6 da origem a ser bloqueada.
(só pode ser usada em socket_set_option())
|
MCAST_UNBLOCK_SOURCE |
Desbloqueia (volta a receber) pacotes que chegam de um endereço de origem específico para um grupo "multicast" específico, no qual deve-se ter ingressado previamente. |
array com o mesmo formato de
MCAST_BLOCK_SOURCE .
(só pode ser usada em socket_set_option())
|
MCAST_JOIN_SOURCE_GROUP |
Recebe pacotes destinados a um grupo "multicast" específico cujo endereço de origem corresponde a um valor específico. |
array com o mesmo formato de
MCAST_BLOCK_SOURCE .
(só pode ser usada em socket_set_option())
|
MCAST_LEAVE_SOURCE_GROUP |
Para de receber pacotes destinados a um grupo "multicast" específico cujo endereço de origem corresponde a um valor específico. |
array com o mesmo formato de
MCAST_BLOCK_SOURCE .
(só pode ser usada em socket_set_option())
|
IP_MULTICAST_IF |
A interface de saída para pacotes "multicast" IPv4. |
Pode ser um int especificando o número da interface ou uma
string com um nome de interface, como
eth0 . O valor 0 pode ser usado para
indicar a tabela de roteamento a ser usada na seleção da interface.
A função socket_get_option() retorna um
índice de interface.
Observe que, diferentemente da API C, esta opção NÃO utiliza um endereço
IP. Isto elimina a diferença de interface entre
IP_MULTICAST_IF e
IPV6_MULTICAST_IF .
|
IPV6_MULTICAST_IF |
A interface de saída para pacotes "multicast" IPv6. |
O mesmo que IP_MULTICAST_IF .
|
IP_MULTICAST_LOOP |
A política de "loopback multicast" para pacotes IPv4 habilita ou desabilita o "loopback" de "multicasts" de saída, que devem ter sido previamente ingressados. O efeito difere, entretanto, se for aplicado em unixes ou Windows, o primeiro está no caminho de recepção enquanto o último está no caminho de envio. |
int (pode ser 0 ou
1 ). Para socket_set_option(),
qualquer valor será aceito e será convertido para um booleano
seguindo as regras normais do PHP.
|
IPV6_MULTICAST_LOOP |
Análoga a IP_MULTICAST_LOOP , porém para IPv6.
|
int. Veja IP_MULTICAST_LOOP .
|
IP_MULTICAST_TTL |
O tempo de vida dos pacotes de saída IPv4 "multicast". Deve ser um valor entre 0 (não sair da interface) e 255. O padrão é 1 (apenas a rede local é alcançada). | int entre 0 e 255. |
IPV6_MULTICAST_HOPS |
Análoga a IP_MULTICAST_TTL , porém para pacotes
IPv6. O valor -1 também é aceito e significa que a rota padrão
deve ser usada.
|
int entre -1 e 255. |
SO_MARK |
Define um identificador no soquete com o objetivo de filtrar pacotes no Linux. | int |
SO_ACCEPTFILTER |
Adicionar um filtro de aceitação no soquete sendo escutado (FreeBSD/NetBSD). Um módulo de kernel de filtro de aceitação precisa ser carregado antecipadamente no FreeBSD (ex.: accf_http). | string. Nome do filtro (comprimento máximo de 15). |
SO_USER_COOKIE |
Define um identificador no soquete com o objetivo de filtrar pacotes no FreeBSD. | int |
SO_RTABLE |
Define um identificador no soquete com o objetivo de filtrar pacotes no OpenBSD. | int |
SO_DONTTRUNC |
Retém dados não lidos. | int |
SO_WANTMORE |
Fornece uma dica de quando mais dados estão prontos. | int |
TCP_DEFER_ACCEPT |
Não notifica um soquete que estiver escutando até que os dados estejam prontos. | int |
SO_INCOMING_CPU |
Obtém/define a afinidade de CPU de um soquete. | int |
SO_MEMINFO |
Obtém todas as informações de memória de um soquete. | int |
SO_BPF_EXTENSIONS |
Obtém as extensões BPF suportadas pelo kernel para anexar a um soquete. | int |
SO_SETFIB |
Define a tabela de rotas (FIB) de um soquete. (Somente FreeBSD) | int |
SOL_FILTER |
Filtros atribuídos a um soquete. (Somente Solaris/Illumos) | int |
TCP_KEEPCNT |
Define o número máximo de sondas de manutenção de atividade que o TCP deve enviar antes de interromper a conexão. | int |
TCP_KEEPIDLE |
Define o tempo que a conexão precisa permanecer ociosa. | int |
TCP_KEEPINTVL |
Define o tempo entre sondagens de manutenção de atividade individuais. | int |
TCP_KEEPALIVE |
Define o tempo que a conexão precisa permanecer ociosa. (somente macOS) | int |
TCP_NOTSENT_LOWAT |
Define o número limite de dados não enviados na fila de escrita pelo fluxo de soquete. (somente Linux) | int |
Retorna o valor da opção informada, ou false
em caso de falha.
Versão | Descrição |
---|---|
8.0.0 |
O parâmetro socket agora espera uma instância de Socket;
anteriormente, um resource era esperado.
|
Exemplo #1 Exemplo de 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));
?>