PHP Foreach并行套接字连接?

时间:2011-05-13 01:00:52

标签: php sockets foreach parallel-processing

我有一个脚本连接到foreach循环中的服务器列表,使用关联数组,其中ip地址作为键,端口号作为值。我将少量数据写入套接字,然后从服务器读回响应。阵列中通常有5-15个服务器,每个事务可能需要几百毫秒,这很快就会增加用户的等待时间。有没有办法可以并行执行连接,这样用户就不必等待很长时间了?

foreach ($clients as $network_address => $port)
{
    $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
    if ($socket === false) {
        continue;
    }

    $result = socket_connect($socket, $network_address, $port);
    if ($result === false) {
        continue;
    }

    socket_write($socket, $data, strlen($data));

    $response[$network_address] = socket_read($socket, 2048);

    socket_close($socket);
}

1 个答案:

答案 0 :(得分:0)

使用socket_select数组& $ read 数组& $ write 数组& $除了 int * $ tv_sec * [, int * $ tv_usec * = 0])与多个主持人交谈是最好的方式。