socket_listen()
(PHP 4 >= 4.1.0, PHP 5, PHP 7)
Listens for a connection on a socket
说明
socket_listen(resource $socket[,int $backlog= 0]): bool
After the socket$sockethas been created using socket_create() and bound to a name with socket_bind(), it may be told to listen for incoming connections on$socket.
socket_listen() is applicable only to sockets of type SOCK_STREAM
or SOCK_SEQPACKET
.
参数
- $socket
A valid socket resource created with socket_create() or socket_addrinfo_bind()
- $backlog
A maximum of$backlogincoming connections will be queued for processing. If a connection request arrives with the queue full the client may receive an error with an indication ofECONNREFUSED, or, if the underlying protocol supports retransmission, the request may be ignored so that retries may succeed.
Note:
The maximum number passed to the$backlogparameter highly depends on the underlying platform. On Linux, it is silently truncated to
SOMAXCONN
. On win32, if passedSOMAXCONN
, the underlying service provider responsible for the socket will set the backlog to a maximumreasonablevalue. There is no standard provision to find out the actual backlog value on this platform.
返回值
成功时返回TRUE
,或者在失败时返回FALSE
。 The error code can be retrieved with socket_last_error(). This code may be passed to socket_strerror() to get a textual explanation of the error.
参见
socket_accept()
Accepts a connection on a socketsocket_bind()
给套接字绑定名字socket_connect()
开启一个套接字连接socket_create()
创建一个套接字(通讯节点)socket_strerror()
Return a string describing a socket errorsocket_addrinfo_bind()
Create and bind to a socket from a given addrinfo
<?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
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.