来自手册:
传递给backlog参数的最大数量在很大程度上取决于底层平台。在Linux上,它被静默地截断为SOMAXCONN。在win32上,如果传递SOMAXCONN,则底层服务负责套接字的提供者将把backlog设置为最大值合理价值。没有标准条款来找出该平台上的实际积压价值。
见鬼,如果我自己还想限制连接呢?限制连接,如:
if( count($client_sockets) < $max_clients ) {
//accept connection
} else {
echo "Limit reached!";
}
与socket_select()
结合使用不会很好地工作,因为函数仍然有传入连接,该服务器需要正确处理!接受连接>$max_clients
并立即关闭它不是一种选择,所以……也许有人知道如何做到这一点?
从另一篇文章中,我了解到,如果不符合所需条件,允许连接并关闭连接实际上是可以接受的。所以多连接套接字服务器的方案是:
socket_accept()
用于传入连接,socket_select()
用于正确处理它,这样服务器就不会再麻烦它了- 检查所需条件是否匹配,例如:连接限制、允许的地址或您的自定义令牌
- 如果出现问题,请
socket_close()
该特定连接,并将其从客户端阵列中删除(或您可能用于此目的的任何其他连接)
也许这会对某人有所帮助。