socket_listen
(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)
socket_listen — Listens for a connection on a socket
说明
After the socket socket
has 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 Socket instance created with socket_create() or socket_addrinfo_bind()
-
backlog
-
A maximum of
backlog
incoming 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.注意:
The maximum number passed to the
backlog
parameter highly depends on the underlying platform. On Linux, it is silently truncated toSOMAXCONN
. On win32, if passedSOMAXCONN
, the underlying service provider responsible for the socket will set the backlog to a maximum reasonable value. 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.
更新日志
版本 | 说明 |
---|---|
8.0.0 |
现在 socket 是 Socket 实例,
之前是 resource。
|
参见
- socket_accept() - 接受套接字上的连接
- socket_bind() - 给套接字绑定名字
- socket_connect() - 开启一个套接字连接
- socket_create() - 创建一个套接字(通讯节点)
- socket_strerror() - Return a string describing a socket error
- socket_addrinfo_bind() - Create and bind to a socket from a given addrinfo

User Contributed Notes 2 notes
<?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.
备份地址:http://www.lvesu.com/blog/php/function.socket-listen.php