PHP - 客户端套接字连接

问题描述:

我试图创建一组的WebSocket客户用下面的代码: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"); 
} 

第35,左右,连接的创建速度非常快。然后一切都变慢,每一步都需要1秒钟才能执行。

你能向我解释为什么会发生这种行为?是否由配置参数引起?这是一个常见的websocket行为吗?

+0

因为35请求存储器开始排出后?CPU利用率达到几乎100%,网络输入是最大值?就像DDos一样。 –

+0

您可以添加有关您的PHP版本和操作系统的精度? –

+0

@Coderanonymous从我的系统监视器我看不到大cpu,内存或网络使用 – marcosh

工作假说:挂起的连接速度变慢的端口

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

对不起,我现在可以发表评论。你工作假设似乎工作,直到我没有检查连接是否成功。如果我听“连接”事件,我没有使用stream_socket_accept获得结果,但是我没有使用它。啊,其实我使用棘轮作为服务器,也许这可以帮助 – marcosh

+0

我不明白棘轮的相关问题 – anonymous

+0

棘轮使用ReactPhp服务器,它是用stream_socket_server创建的,而他们我需要创建php客户端来连接到服务器 – marcosh