2011-05-13 48 views
0

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

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

http://php.net/manual/en/function.socket-set-nonblock.php可能有帮助 – 2011-05-13 01:06:09

回答

0

使用socket_select阵列 & $读阵列 & $写阵列 & $除了INT * $ tv_sec * [,INT * $ tv_usec * = 0])是与多于一个主机通话的最佳方式。