TEngo el Siguiente Code de Ejemplo
Código PHP:
<?php
//coded by OzX Undersecurity.net
$hosts[] = "terra.cl";
//Otros Sitios mas, (por problemas de spam del foro no puedo postear mas link)
//Genero 30 Peticiones Simultaneas
$data = "";
$timeout = 15;
$sockets = array();
#Asignamos Los sockets Creados a un Array
foreach ($hosts as $id => $host) {
$sockets[$id] = stream_socket_client("$host:80", $errno, $errstr, $timeout, STREAM_CLIENT_ASYNC_CONNECT);
}
#=================================================
$total = count($sockets); //Contamos el Total de Socket Creados
for($x=0;$x<$total;$x++){ // Creamos el Ciclo para Realizar las Peticiones
$write = $sockets; //Se Copia el array de sockets a write, en cada ciclo este sera 1 menos.
$n = stream_select($r=null, $write, $e = null, $timeout); //establecemos y selecionamos un socket.
echo "[+] HOST :".$hosts[$x]."\n";
if ($n > 0) { //si existen cambios (si quedan socket por procesar)then...
$packet = "GET /index.php HTTP/1.1\r\n";//Headers
$packet .= "Host: ".$hosts[$x]."\r\n"; //Headers
$packet .= "Connection: close\r\n\r\n"; //Headers
fwrite($sockets[$x],$packet); //Enviamos la Peticion
while (!feof($sockets[$x])) {
$data .= fgets($sockets[$x], 128); //Obtenemos el Code Source
}
echo strlen($data)."\n"; //Contamos el Total (Solo Test)
fclose($sockets[$x]); //Cerramos Conexion
$data = "";
/*Borramos en el Array La peticion recien pasada para que en el siguiente */
unset($sockets[$x]);
}
}
?>
Resultado en Tcpview
i39.tinypic.com/2dlm7o1.png
En windows no esta habilitado fork por defecto como en los sistema unix, que se puede hacer un "fork" y hacer todo esto muxo mas facil.
Resulta que Creo todos Estos Procesos, Obtengo su codigo Fuente y TOdo Perfecto, pero se me crean Procesos en estado Time_Wait
Los cuales a los 30 segundos se Terminan.
No Tengo problema al Ejecutar 1 vez el script, pero si lo ejecuto constantemente que es lo que deseo, la Cola de procesos en time_wait, es enorme..
Estoy haciendo un Crawler Para la realizacion de un Sitemap que sea realmente Rapido. y que no se demora horas en terminar.
¿Como Podria? Terminar Estos proceos?
IMG de los procesos.
i40.tinypic.com/dv4lx.png
¿alguien sabe como ?
Saludos¡