Exemplo n.º 1
0
 public function pruneDeadWorkers()
 {
     $worker_pids = $this->workerPids();
     return Resque::redis()->smembers('workers')->then(function ($response) use($worker_pids) {
         $promises = \React\Promise\map($response, function ($workerId) use($worker_pids) {
             list($hostname, $pid, $queues) = explode(':', $workerId, 3);
             if ($hostname != $this->hostname || in_array($pid, $worker_pids) || $pid == getmypid()) {
                 return null;
             }
             $queues = explode(',', $queues);
             $worker = new self($queues, \Iwai\React\Resque::getEventLoop());
             $worker->setId($workerId);
             return $worker->unregisterWorker();
         });
         return \React\Promise\all($promises);
     });
 }