コード例 #1
0
ファイル: Client.php プロジェクト: sudevva/parser2
 /**
  * Run a set of tasks
  *
  * @param object $set A set of tasks to run
  * @param int $timeout Time in seconds for the socket timeout. Max is 10 seconds
  *
  * @return void
  * @see Net_Gearman_Set, Net_Gearman_Task
  */
 public function runSet(Net_Gearman_Set $set, $timeout = null)
 {
     $this->set = $set;
     $totalTasks = $this->set->tasksCount;
     $taskKeys = array_keys($this->set->tasks);
     $t = 0;
     if ($timeout !== null) {
         $socket_timeout = min(10, (int) $timeout);
     } else {
         $socket_timeout = 10;
     }
     while (!$this->set->finished()) {
         if ($timeout !== null) {
             if (empty($start)) {
                 $start = microtime(true);
             } else {
                 $now = microtime(true);
                 if ($now - $start >= $timeout) {
                     break;
                 }
             }
         }
         if ($t < $totalTasks) {
             $k = $taskKeys[$t];
             $this->submitTask($this->set->tasks[$k]);
             if ($this->set->tasks[$k]->type == Net_Gearman_Task::JOB_BACKGROUND || $this->set->tasks[$k]->type == Net_Gearman_Task::JOB_HIGH_BACKGROUND || $this->set->tasks[$k]->type == Net_Gearman_Task::JOB_LOW_BACKGROUND) {
                 $this->set->tasks[$k]->finished = true;
                 $this->set->tasksCount--;
             }
             $t++;
         }
         $write = null;
         $except = null;
         $read = $this->conn;
         @socket_select($read, $write, $except, $socket_timeout);
         foreach ($read as $socket) {
             $err = socket_last_error($socket);
             // Error 11 is EAGAIN and is normal in non-blocking mode
             if ($err && $err != 11) {
                 $msg = socket_strerror($err);
                 socket_getpeername($socket, $remote_address, $remote_port);
                 socket_getsockname($socket, $local_address, $local_port);
                 trigger_error("socket_select failed: ({$err}) {$msg}; server: {$remote_address}:{$remote_port}", E_USER_WARNING);
             }
             socket_clear_error($socket);
             $resp = Net_Gearman_Connection::read($socket);
             if (count($resp)) {
                 $this->handleResponse($resp, $socket, $this->set);
             }
         }
     }
 }
コード例 #2
0
ファイル: Client.php プロジェクト: garv347/swanhart-tools
 /**
  * Run a set of tasks
  *
  * @param object $set A set of tasks to run
  * 
  * @return void
  * @see Net_Gearman_Set, Net_Gearman_Task
  */
 public function runSet(Net_Gearman_Set $set)
 {
     $totalTasks = $set->tasksCount;
     $taskKeys = array_keys($set->tasks);
     $t = 0;
     while (!$set->finished()) {
         if ($t < $totalTasks) {
             $k = $taskKeys[$t];
             $this->submitTask($set->tasks[$k]);
             if ($set->tasks[$k]->type == Net_Gearman_Task::JOB_BACKGROUND) {
                 $set->tasks[$k]->finished = true;
                 $set->tasksCount--;
             }
             $t++;
         }
         $write = null;
         $except = null;
         $read = $this->conn;
         socket_select($read, $write, $except, 10);
         foreach ($read as $socket) {
             $resp = Net_Gearman_Connection::read($socket);
             if (count($resp)) {
                 $this->handleResponse($resp, $socket, $set);
             }
         }
     }
 }
コード例 #3
0
ファイル: Client.php プロジェクト: rrehbeindoi/net_gearman
 /**
  * Run a set of tasks
  *
  * @param object $set A set of tasks to run
  * @param int    $timeout Time in seconds for the socket timeout. Max is 10 seconds
  *
  * @return void
  * @see Net_Gearman_Set, Net_Gearman_Task
  */
 public function runSet(Net_Gearman_Set $set, $timeout = null)
 {
     $totalTasks = $set->tasksCount;
     $taskKeys = array_keys($set->tasks);
     $t = 0;
     if ($timeout !== null) {
         $socket_timeout = min(10, (int) $timeout);
     } else {
         $socket_timeout = 10;
     }
     while (!$set->finished()) {
         if ($timeout !== null) {
             if (empty($start)) {
                 $start = microtime(true);
             } else {
                 $now = microtime(true);
                 if ($now - $start >= $timeout) {
                     break;
                 }
             }
         }
         if ($t < $totalTasks) {
             $k = $taskKeys[$t];
             $this->submitTask($set->tasks[$k]);
             if ($set->tasks[$k]->type == Net_Gearman_Task::JOB_BACKGROUND || $set->tasks[$k]->type == Net_Gearman_Task::JOB_HIGH_BACKGROUND || $set->tasks[$k]->type == Net_Gearman_Task::JOB_LOW_BACKGROUND) {
                 $set->tasks[$k]->finished = true;
                 $set->tasksCount--;
             }
             $t++;
         }
         $write = null;
         $except = null;
         $read = $this->conn;
         socket_select($read, $write, $except, $socket_timeout);
         foreach ($read as $socket) {
             $resp = Net_Gearman_Connection::read($socket);
             if (count($resp)) {
                 $this->handleResponse($resp, $socket, $set);
             }
         }
     }
 }