예제 #1
0
 /**
  * Save or update worker
  * @param Worker $worker
  * @return Worker
  */
 public function saveWorker(Worker $worker)
 {
     if (is_null($worker->getId())) {
         $query = $this->db->prepare("INSERT INTO workers (host, port, type, status) VALUES (?, ?, ?, ?)");
         $query->execute([$worker->getHost(), $worker->getPort(), $worker->getType(), $worker->getStatus()]);
         $worker->setId($this->db->lastInsertId());
     } else {
         $query = $this->db->prepare("UPDATE workers SET host = ?, port = ?, type = ?, status = ? WHERE id = ?");
         $query->execute([$worker->getHost(), $worker->getPort(), $worker->getType(), $worker->getStatus(), $worker->getId()]);
     }
     return $worker;
 }
예제 #2
0
 public function testDeadWorkerCleanUpDoesNotCleanUnknownWorkers()
 {
     // Register a bad worker on this machine
     $worker = new Worker('jobs');
     $workerId = explode(':', $worker);
     $worker->setId($workerId[0] . ':1:jobs');
     $worker->registerWorker();
     // Register some other false workers
     $worker = new Worker('jobs');
     $worker->setId('my.other.host:1:jobs');
     $worker->registerWorker();
     $this->assertEquals(2, count(Worker::all()));
     $worker->pruneDeadWorkers();
     // my.other.host should be left
     $workers = Worker::all();
     $this->assertEquals(1, count($workers));
     $this->assertEquals((string) $worker, (string) $workers[0]);
 }