<?php 
include "../UsagiMQ.php"; 
 
$usa=new UsagiMQ("127.0.0.1",6379,1); 
if ($usa->connected) { 
    echo $usa->receive(); 
    if ($usa->key) { 
        // method 1: calling a random worker. 
        // its an example, if the operation is insert, then we call an random worker. In this case, its a local worker but it could be located in a different server 
        if ($usa->op=='insert') { 
            curlAsync('worker_insert_'.rand(1,3).'.php?key='.$usa->key); 
        } 
        // method 2: load balance 
        if ($usa->op=='insert') { 
            $ic=$usa->redis->incr('INSERTCOUNTER'); 
            if ($ic>=3) { 
                $ic=0; 
                $usa->redis->set('INSERTCOUNTER',$ic); 
            } 
            curlAsync('worker_insert_'.($ic+1).'.php?key='.$usa->key); 
        } 
    } 
} else { 
    echo "not connected"; 
} 
 
 
/** 
 * This operation returns nothing and takes 1ms. 
 * @param string $url relative path. 
 */ 
function curlAsync($url) { 
    $actuallink = (isset($_SERVER['HTTPS']) ? "https" : "http") . "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"; 
    $cleanLink=substr($actuallink ,0,strrpos($actuallink,'/')).'/'.$url; 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $cleanLink); 
    curl_setopt($ch, CURLOPT_FRESH_CONNECT, true); 
    curl_setopt($ch, CURLOPT_TIMEOUT_MS, 1); // for php >5.2.3 
    curl_setopt($ch, CURLOPT_NOSIGNAL, 1); 
 
    curl_exec($ch); 
    curl_close($ch); 
}
 
 |