-
[Socket]Multiconnessione
Codice PHP:
include"connect.inc.php";
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
$result = mysql_query($query, $connection);
$query2 = "SELECT * FROM db_host";
$result2 = mysql_query($query2, $connection);
while($row2 = mysql_fetch_array($result2))
{
$address=explode(":","$row2[address]");
$result = socket_connect($socket, $address[0], $address[1]);
echo"$result";
}
Lo script estrae gli host e le porte e si collega ad essi restituendo 0 o 1 grazie alla variabile $result che è associata alla connessione socket.
Ma questo non accade.
Sono in locale i socket sono attivi,ma sembra che non sia possibile collegarsi con più di un host.
Sapete aiutarmi?.
Grazie.
-
non dovresti usare la stessa socket per più connessioni, prova a crere una oscket per ogni connessione e vedrai che funziona...
-
$id="$row2[id]";
$address = explode(":","$row2[hubaddress]");
$socket.$id = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
$result = socket_connect("$socket.$id", $address[0], $address[1]);
Questa è la riga dentro il while.
Ma mi dà errore.
-
bhè...c'erano un po' di errori:
$id=$row2['id'];
$address = explode(":", $row2['hubaddress']);
$socket[$id] = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
$result = socket_connect($socket[$id], $address[0], $address[1]);
prova ora
-
Grazie SoulHome...
E ancora una volta la community di av resta imbattuta.
Complimenti..^^
Un'ultima cosa veloce...
Come faccio ad evitare il messaggio di warning che viene fuori quando $result è zero?
Edit c'è l'ho fatta:
Per gli user che nè avranno di bisogno.
ERROR_REPORTING(0); //Disattiva i messaggi di warning
-
Il warning viene fuori probabilemnte a causa di un errore di connessione nella funzione socket_connect(), ti consiglio di togliere error_reporting(0); e di sostituire
$result = socket_connect($socket[$id], $address[0], $address[1])
con
$result = @socket_connect($socket[$id], $address[0], $address[1])
così nasconderai solo gli errori della funzione in questione e non quelli di tutto il file ed eventuali inclusioni.