简体   繁体   English

PHP-客户端套接字连接

[英]PHP - client socket connections

I am trying to create a set of websocket clients with the following code: 我正在尝试使用以下代码创建一组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");
}

The first 35, or so, connections are created very fast. 创建前35个左右的连接的速度非常快。 Then everything slows down and every step takes 1 second to execute. 然后一切都变慢了,每个步骤需要1秒钟才能执行。

Could you explain to me why this behaviour happens? 您能否向我解释为什么会发生这种行为? Is it caused by a configuration parameter? 是由配置参数引起的吗? Is it a common websocket behaviour? 这是常见的网络套接字行为吗?

Working hypothesis: pending connections slows down the port 工作假设:挂起的连接会减慢端口的速度

<?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);
}

Supplement: 补充:

In case listening party is server.c (modified not to accepting connections). 如果侦听方是server.c(修改为不接受连接)。 Connections slow down after 27% of specified backlog. 在指定积压的27%之后,连接速度降低。 http://www.linuxhowtos.org/data/6/server.c 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");
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM