我正在尝试使用以下代码创建一组websocket客户端:
$server = stream_socket_server("tcp://127.0.0.1:8080");
for ($i = 1; $i <= 50; $i++) {
var_dump($i);
stream_socket_client("tcp://127.0.0.1:8080");
}
前35个左右的连接创建速度非常快。然后一切都变慢,每一步都需要1秒才能执行。
你能解释一下为什么会出现这种情况吗?是由配置参数引起的吗?这是一个常见的websocket行为吗?
答案 0 :(得分:1)
工作假设:挂起的连接会降低端口的速度
<?php
$server = stream_socket_server("tcp://127.0.0.1:8080");
for ($i = 1; $i <= 50; $i++) {
var_dump($i);
stream_socket_client("tcp://127.0.0.1:8080");
stream_socket_accept($server);
}
补充:
如果收听方是server.c(修改为不接受连接)。 27%的指定积压后,连接速度变慢。 http://www.linuxhowtos.org/data/6/server.c
<?php
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_bind($socket, "127.0.0.1", 8081);
$backlog = 500; // less than /proc/sys/net/core/somaxconn
socket_listen($socket, $backlog);
for ($i = 1; $i <= 500; $i++) {
var_dump($i);
stream_socket_client("tcp://127.0.0.1:8081");
}