<?php
// Ejecuta un proceso en un socket
function JobStartAsync($server, $url, $port=80,$conn_timeout=30, $rw_timeout=86400) {
    $errno = '';
    $errstr = '';
    set_time_limit(0);
    $fp = fsockopen($server, $port, $errno, $errstr, $conn_timeout);
    if (!$fp) {
    echo "$errstr ($errno)
    \n";
    return false;
    }
    $out = "GET $url HTTP/1.1\r\n";
    $out .= "Host: $server\r\n";
    $out .= "Connection: Close\r\n\r\n";
    stream_set_blocking($fp, false);
    stream_set_timeout($fp, $rw_timeout);
    fwrite($fp, $out);
    return $fp;
    }
    // Devuelve falso si el socket está desconectado o un string (que puede ser vacio) si está conectado
    function JobPollAsync(&$fp) {
    if ($fp === false) return false;
    if (feof($fp)) {
    fclose($fp);
    $fp = false;
    return false;
    }
    return fread($fp, 10000);
    }
    
    // Ejecución inicial
    // Se ejecutan dos procesos cualquiera j1 y j2
    function Async ($Ruta,$Url = 'localhost'){
     $fp1 = JobStartAsync($Url,$Ruta);
     while (true) {
    sleep(1);
    $r1 = JobPollAsync($fp1);
    $Res = '';
    if ($r1 === false) break;
    if ($r1 != false AND $r1 != "" ) $Res= $r1;

    flush(); @ob_flush();
    }
    echo $Res;
    
    }
//Async('/CodeIgniter/Alarma');
?>