асинхронный — клиентские сокеты

Я пытаюсь создать набор клиентов 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 секунду.

Не могли бы вы объяснить мне, почему такое поведение происходит? Это вызвано параметром конфигурации? Это обычное поведение веб-сокета?

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");
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]