コード例 #1
0
ファイル: Client.php プロジェクト: sudevva/parser2
 /**
  * Handle the response read in
  *
  * @param array $resp The raw array response
  * @param resource $s The socket
  * @param object $tasks The tasks being ran
  *
  * @return void
  * @throws Net_Gearman_Exception
  */
 protected function handleResponse($resp, $s, Net_Gearman_Set $tasks)
 {
     if (isset($resp['data']['handle']) && $resp['function'] != 'job_created') {
         $task = $tasks->getTask($resp['data']['handle']);
     }
     switch ($resp['function']) {
         case 'work_complete':
             $tasks->tasksCount--;
             $task->complete(json_decode($resp['data']['result'], true));
             break;
         case 'work_status':
             $n = (int) $resp['data']['numerator'];
             $d = (int) $resp['data']['denominator'];
             $task->status($n, $d);
             break;
         case 'work_fail':
             $tasks->tasksCount--;
             $task->fail();
             break;
         case 'job_created':
             $task = array_shift(Net_Gearman_Connection::$waiting[(int) $s]);
             $task->handle = $resp['data']['handle'];
             if ($task->type == Net_Gearman_Task::JOB_BACKGROUND) {
                 $task->finished = true;
             }
             $tasks->handles[$task->handle] = $task->uniq;
             break;
         case 'error':
             throw new Net_Gearman_Exception('An error occurred');
         default:
             throw new Net_Gearman_Exception('Invalid function ' . $resp['function']);
     }
 }