2011-05-13 52 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])是與多於一個主機通話的最佳方式。