/** * Reschedules a specific running job * * Note : see DoctrineQueue::parseOptionsToDateTime for schedule and delay options * * @param JobInterface $job * @param array $options * @throws Exception\LogicException */ public function release(JobInterface $job, array $options = array()) { $scheduled = $this->parseOptionsToDateTime($options); $update = 'UPDATE ' . $this->options->getTableName() . ' ' . 'SET status = ?, finished = ? , scheduled = ?, data = ? ' . 'WHERE id = ? AND status = ?'; $rows = $this->connection->executeUpdate($update, array(static::STATUS_PENDING, new DateTime(null, new DateTimeZone(date_default_timezone_get())), $scheduled, $job->jsonSerialize(), $job->getId(), static::STATUS_RUNNING), array(Type::SMALLINT, Type::DATETIME, Type::DATETIME, Type::STRING, Type::INTEGER, Type::SMALLINT)); if ($rows != 1) { throw new Exception\LogicException("Race-condition detected while updating item in queue."); } }