0

我想知道是否有人对如何在同一服务器上打开多个套接字、在 PHP 中同时写入和读取数据有任何深入的了解。我应该使用像 Amphp 这样的并发框架还是有更好的选择来完成这项任务?我将如何继续构建它?基本上我想以非阻塞方式实现这样的目标:

foreach ($conns as $c) {
    $socket = socket_create(AF_INET, SOCK_STREAM, 0);
    $result = socket_connect($socket, $c['host'], $c['port']);
    socket_write($socket, $c['message'], strlen($c['message']));
    $result = socket_read ($socket, 1024);
    socket_close($socket);
    ...
}
4

1 回答 1

0

您在循环中顺序写入和读取数据。尝试进行两个循环 - 在最火的写入中,然后在第二次读取中并命名数组中套接字的值:

$socket[] = socket_create(AF_INET, SOCK_STREAM, 0);
$result = socket_connect(current($socket), $c['host'], $c['port']);
socket_write(current($socket), $c['message'], strlen($c['message']));

在第二个循环中读取它们并关闭:

foreach ($socket as $sc) {
    $result = socket_read ($sc, 1024);
    socket_close($sc);
    ...
}
于 2018-09-22T13:38:56.793 回答