2011-05-13 3 views
0

J'ai un script qui se connecte à une liste de serveurs dans une boucle foreach en utilisant un tableau associatif avec l'adresse IP comme clé et le numéro de port comme valeur. J'écris une petite quantité de données dans le socket puis relire la réponse du serveur. Il y a généralement 5 à 15 serveurs dans la matrice et chaque transaction peut prendre quelques centaines de millisecondes, ce qui ajoute rapidement au temps d'attente pour l'utilisateur. Existe-t-il un moyen d'exécuter les connexions en parallèle pour que les utilisateurs n'aient pas à attendre aussi longtemps?PHP Foreach Connexions Socket Parallèle?

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/fr/function.socket-set-nonblock.php pourrait vous aider –

Répondre

0

L'utilisation socket_select (tableau & $ lire, tableau & $ écrire, tableau & $, sauf, int * tv_sec $ * [, int * $ tv_usec * = 0]) est le meilleur moyen de parler à plus d'un hôte.