public function listen() { $job = $this->conn->reserve(); $this->conn->delete($job); return Job::restore($this->config, $job->getData()); }
public function listen() { $this->get('GearmanWorker')->work(); return Job::restore($this->config, $this->workload); }
public function listen() { $this->channel->basic_qos(null, 1, null); $this->channel->wait(); return Job::restore($this->config, $this->msg->body); }
public function listen() { if (empty($this->sql)) { throw new \RuntimeException("You need to add services first"); } $tasks = $this->conn->tasks; do { $this->sql->execute($this->args); $task = $tasks->findOneByTaskHandleAndTaskStatus($this->handle, 1); if ($task) { $task->taskStatus = 2; $this->conn->save($task); break; } usleep(200000); } while (true); return Job::restore($this->config, $task->taskPayload); }
protected function processReport($process, $stdout) { foreach (explode("\n", $stdout) as $line) { if (empty($line)) { continue; } if ($line[0] == "") { $parts = explode("", $line); if ($parts[2] != strlen($parts[3])) { die("Invalid response"); } $args = json_decode($parts[3], true); switch ($parts[1]) { case 'start': $process->status = 'busy'; $process->job = Job::restore($this->config, $args['args']); $process->time = time(); $process->timeout = max($args['timeout'], 60); $this->log($process, "beging job '{$process->job->function}'"); break; case 'failed': $process->job = null; $process->status = 'idle'; $process->time = time(); $process->failed++; if (empty($process->memory_begin)) { $process->memory_begin = $args[0]; } $process->memory_last = $args[1]; $this->log($process, "done with error ({$args[2]}: {$args[3]})"); $this->checkprocessHealth($process); break; case 'end': $process->job->setResult($args[0]); $process->job = null; $process->status = 'idle'; $process->time = time(); $process->jobs++; if (empty($process->memory_begin)) { $process->memory_begin = $args[1]; } $process->memory_last = $args[2]; $this->log($process, "done with success"); $this->checkprocessHealth($process); break; case 'empty': $this->log($process, "no job, respawning in {$args[0]} seconds"); break; } } else { $this->log($process, $line); } } }