Cronario\Queue::releaseJob PHP Method

releaseJob() public method

public releaseJob ( $id, integer $delay ) : boolean
$id
$delay integer
return boolean
    public function releaseJob($id, $delay = 0)
    {
        $payload = $this->getPayload($id);
        if ($payload[self::JOB_PAYLOAD_STATE] !== self::STATE_RESERVED) {
            throw new QueueException(' Cannot release state unsupported! ' . $payload[self::JOB_PAYLOAD_STATE]);
        }
        $keyReady = $this->getKeyReady($payload[self::JOB_PAYLOAD_QUEUE]);
        $keyDelayed = $this->getKeyDelayed($payload[self::JOB_PAYLOAD_QUEUE]);
        $keyReserved = $this->getKeyReserved($payload[self::JOB_PAYLOAD_QUEUE]);
        $redisJobNamespace = $this->getRedisJobNamespace();
        $result = $this->getRedis()->transaction(function ($tx) use($id, $payload, $delay, $keyReady, $keyDelayed, $keyReserved, $redisJobNamespace) {
            /** @var $tx \Predis\Client */
            $tx->zrem($keyReserved, $id);
            $payload = self::buildPayload($payload[self::JOB_PAYLOAD_QUEUE], $delay ? self::STATE_DELAYED : self::STATE_READY);
            $tx->hset($redisJobNamespace, $id, $payload);
            if ($delay == 0) {
                $tx->rpush($keyReady, $id);
            } else {
                $tx->zadd($keyDelayed, $this->getTime() + $delay, $id);
            }
        });
        return !in_array(false, $result);
    }