protected function execute(InputInterface $input, OutputInterface $output) { if ($input->getOption('all')) { $workers = \Resque_Worker::all(); } else { $worker = \Resque_Worker::find($input->getArgument('id')); if (!$worker) { $availableWorkers = \Resque_Worker::all(); if (!empty($availableWorkers)) { throw new \RuntimeException('A running worker must be specified'); } } $workers = $worker ? array($worker) : array(); } if (count($workers) <= 0) { $output->writeln(array('No workers running', '')); return; } $signal = $input->getOption('force') ? SIGTERM : SIGQUIT; foreach ($workers as $worker) { $output->writeln(sprintf('%s %s...', $signal === SIGTERM ? 'Force stopping' : 'Stopping', $worker)); list(, $pid) = explode(':', (string) $worker); posix_kill($pid, $signal); } $output->writeln(''); }
protected function execute(InputInterface $input, OutputInterface $output) { $workers = \Resque_Worker::all(); if (count($workers) <= 0) { $output->writeln(array('No workers running', '')); return 0; } $queueFilter = $input->getArgument('queue'); if ('*' === $queueFilter) { $queueFilter = false; } $workerOutput = array(); $longestName = 0; foreach ($workers as $worker) { $queues = $worker->queues(true) ?: array('*'); if ($queueFilter) { if (!in_array('*', $queues) && !in_array($queueFilter, $queues)) { continue; } } $name = (string) $worker; $job = ($job = $worker->job()) ? 'Processing ' . json_encode($job) : 'Waiting for job'; if (strlen($job) > 20) { $job = substr($job, 0, 20) . '...'; } $workerOutput[] = array($name, $job); if (($thisLength = strlen($name)) > $longestName) { $longestName = $thisLength; } } $output->writeln(sprintf('%-' . $longestName . "s\t%s", 'Worker ID', 'Current Job')); $loopFormat = '%-' . $longestName . "s\t<info>%s</info>"; foreach ($workerOutput as $worker) { $output->writeln(sprintf($loopFormat, $worker[0], $worker[1])); } $output->writeln(''); }
/** * Returns the number of connected Redis workers * * @return int */ public static function RedisWorkersCount() { return count(Resque_Worker::all()); }
/** * @return array */ public function getWorkers() { return \array_map(function ($worker) { return new Worker($worker); }, \Resque_Worker::all()); }
public function workers(Request $request, Response $response, array $args) { $data = []; $settings = loadsettings(); $REDIS_BACKEND = $settings['resque']['REDIS_BACKEND']; if (!empty($REDIS_BACKEND)) { \Resque::setBackend($REDIS_BACKEND); } $workerlist = \Resque_Worker::all(); $workers = []; foreach ($workerlist as $worker) { $job = $worker->job(); if (empty($job)) { $job = "Idle"; } $workers[] = ['name' => (string) $worker, 'job' => $job]; } $data['workers'] = $workers; $this->view->render($response, 'workers.twig', $data); return $response; }
public function testDeadWorkerCleanUpDoesNotCleanUnknownWorkers() { // Register a bad worker on this machine $worker = new Resque_Worker('jobs'); $worker->setLogger(new Resque_Log()); $workerId = explode(':', $worker); $worker->setId($workerId[0] . ':1:jobs'); $worker->registerWorker(); // Register some other false workers $worker = new Resque_Worker('jobs'); $worker->setLogger(new Resque_Log()); $worker->setId('my.other.host:1:jobs'); $worker->registerWorker(); $this->assertEquals(2, count(Resque_Worker::all())); $worker->pruneDeadWorkers(); // my.other.host should be left $workers = Resque_Worker::all(); $this->assertEquals(1, count($workers)); $this->assertEquals((string) $worker, (string) $workers[0]); }
/** * Return a list of workers * * @return array of workers */ public function getWorkers() { return (array) \Resque_Worker::all(); }
/** * Print some stats about the workers */ protected function stats() { $this->outputTitle('Workers statistics'); $this->output->outputLine(); $this->output->outputLine('Jobs Stats', 'subtitle'); $this->output->outputLine(" Processed Jobs : " . \Resque_Stat::get('processed')); $this->output->outputLine(" Failed Jobs : " . \Resque_Stat::get('failed'), 'failure'); $this->output->outputLine(); $this->output->outputLine('Workers Stats', 'subtitle'); $workers = \Resque_Worker::all(); $this->output->outputLine(" Active Workers : " . count($workers)); if (!empty($workers)) { foreach ($workers as $worker) { $this->output->outputLine(" Worker : " . $worker, 'bold'); $this->output->outputLine(" - Started on : " . \Resque::Redis()->get('worker:' . $worker . ':started')); $this->output->outputLine(" - Uptime : " . $this->formatDateDiff(new \DateTime(\Resque::Redis()->get('worker:' . $worker . ':started')))); $this->output->outputLine(" - Processed Jobs : " . $worker->getStat('processed')); $worker->getStat('failed') == 0 ? $this->output->outputLine(" - Failed Jobs : " . $worker->getStat('failed')) : $this->output->outputLine(" - Failed Jobs : " . $worker->getStat('failed'), 'failure'); } } $this->output->outputLine("\n"); }