socket_listen

(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)

socket_listenAbre escuta para uma conexão no socket

Descrição

socket_listen ( resource $socket , int $backlog = ? ) : bool
Aviso

Esta função é EXPERIMENTAL. O comportamento, seu nome e documentação podem mudar sem aviso em futuras versões do PHP. Utilize por sua própria conta e risco.

Após o socket socket ter sido criado usando socket_create() e associado para um nome com socket_bind(), ele deve dizer para aguardar por escuta em conexões que irão entrar socket.

Um máximo de backlog em conexões entrantes irão ser listadas para este processamento. Se uma requisição de conexão chegar com um limite de clientes devem receber um erro com uma identificação de ECONNREFUSED, ou, se o protocolo abaixo suporta retransmissão, a requisição deve ser ignorada de forma até serem bem sucedidas.

Nota:

O máximo número passado para o parâmetro backlog altamente dependente da plataforma abaixo. No linux, isso é silenciosamente truncado para SOMAXCONN. No win32, se passado SOMAXCONN, o disponibilizador de serviço abaixo responsável pelo socket irá configurar o backlog para o valor máximo reasonable. Não há uma condição para procurar o valor do backlog atual nesta plataforma.

socket_listen() é aplicável somente para sockets do tipo SOCK_STREAM ou SOCK_SEQPACKET.

Retorna true em caso de sucesso ou false em caso de falha. O código de erro pode ser retornado com socket_last_error(). Isso código deve ser passado para socket_strerror() para pegar uma explicação textual do erro.

Veja também socket_accept(), socket_bind(), socket_connect(), socket_create() e socket_strerror().

add a note add a note

User Contributed Notes 2 notes

up
4
renmengyang567 at gmail dot com
5 years ago
<?php
// create for tcp
$sock = socket_create(AF_INET, SOCK_STREAM, getprotobyname('tcp'));
socket_bind($sock, '127.0.0.1',5000);
socket_listen($sock,1);
sleep(20);
?>

<fruit>
netstat  -ntpl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 127.0.0.1:5000          0.0.0.0:*               LISTEN      1839/php
up
-34
Karuna Govind (karuna.kgx gmail)
15 years ago
To change the maximum allowed backlog by your system (*nix machines only), first you need to find the variable for this limit:

sudo sysctl -a | grep somaxconn

On ubuntu boxes, it returns net.core.somaxconn (you need to look for the 'somaxconn' variable, the full name will vary across different systems).

Update this to a large number as follows:

sudo sysctl -w net.core.somaxconn=1024

This will work straight away. no restart required.
To Top