<?php // +---------------------------------------------------------------------- // | ThinkPHP [ WE CAN DO IT JUST THINK IT ] // +---------------------------------------------------------------------- // | Copyright (c) 2006-2015 http://thinkphp.cn All rights reserved. // +---------------------------------------------------------------------- // | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 ) // +---------------------------------------------------------------------- // | Author: yunwuxin <448901948@qq.com> // +---------------------------------------------------------------------- namespace think\queue\job; use think\App; use think\queue\connector\Redis as RedisQueue; use think\queue\Job; class Redis extends Job { /** * The redis queue instance. * @var RedisQueue */ protected $redis; /** * The database job payload. * @var Object */ protected $job; /** * The Redis job payload inside the reserved queue. * * @var string */ protected $reserved; public function __construct(App $app, RedisQueue $redis, $job, $reserved, $connection, $queue) { $this->app = $app; $this->job = $job; $this->queue = $queue; $this->connection = $connection; $this->redis = $redis; $this->reserved = $reserved; } /** * Get the number of times the job has been attempted. * @return int */ public function attempts() { return $this->payload('attempts') + 1; } /** * Get the raw body string for the job. * @return string */ public function getRawBody() { return $this->job; } /** * 删除任务 * * @return void */ public function delete() { parent::delete(); $this->redis->deleteReserved($this->queue, $this); } /** * 重新发布任务 * * @param int $delay * @return void */ public function release($delay = 0) { parent::release($delay); $this->redis->deleteAndRelease($this->queue, $this, $delay); } /** * Get the job identifier. * * @return string */ public function getJobId() { return $this->payload('id'); } /** * Get the underlying reserved Redis job. * * @return string */ public function getReservedJob() { return $this->reserved; } }