/** * 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; }
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]); }