我看到了socket_listen()
的手册。我仍然不明白
bool socket_listen ( resource $socket [, int $backlog = 0 ] )
1.这种情况下的积压是什么?
2.为什么使用socket_listen()以及它的用途是什么?
3.
中删除了什么?backlogs
从socket_listen()
- 为什么要使用
醇>0,1,2,3
等积压值?
请解释上述问题。
由于
答案 0 :(得分:3)
<div class='container'>";
echo "<div class='row';
echo "<div class='span8';
echo page_slider();
echo"</div><div class='span8'>
<img src='http://jesuspeople.personalityweb.com/wpcontent/uploads/2016
/10/partner-with-us-1.jpg' />
<img src='http://jesuspeople.personalityweb.com/wp-content/
uploads/2016/10/prophetic-corner-1.jpg' />
<img src='http://jesuspeople.personalityweb.com/wp-
content/uploads/2016/10/miracle-testimonies-1.jpg' /></div>";
echo"</div></div>";
的方式有什么问题?
最多积压传入连接将排队等待处理。如果连接请求到达并且队列已满,则客户端可能会收到带有
$backlog
指示的错误,或者,如果基础协议支持重新传输,则可以忽略该请求,以便重试可能成功。注意:强> 传递给backlog参数的最大数量很大程度上取决于底层平台。在Linux上,它被静默地截断为
ECONNREFUSED
。在win32上,如果传递SOMAXCONN
,则负责套接字的底层服务提供者会将backlog设置为最大合理值。没有标准规定可以找出此平台上的实际积压值。
或者您可以引用BSD Sockets listen documentation,因为PHP使用BSD套接字:
一个整数,表示可以在任何时间排队的挂起连接数。操作系统通常会对此值设置上限。
BSD套接字历史上使用单个队列实现,其大小由backlog参数确定。
当从客户端收到SOMAXCONN
数据包时,它会发回SYN
数据包并将连接添加到队列中。收到相应的SYN/ACK
后,连接会将其状态更改为ACK
,并有资格切换到应用程序。
当达到最大积压时,系统将不再发回ESTABLISHED
个数据包以响应SYN/ACK
个数据包。通常,TCP实现只会丢弃SYN
数据包(而不是使用SYN
数据包进行响应),以便客户端重试。因此,&#34; 可能会收到错误,并显示RST
&#34;
如果您在实现中不使用ECONNREFUSED
参数,则只会自动设置。在Linux上它的 128 ,从listen man page开始:
如果backlog参数大于
backlog
中的值,则会以静默方式将其截断为该值;此文件中的默认值为128.在2.4.25之前的内核中,此限制为硬编码值/proc/sys/net/core/somaxconn
,值为128。