php-resque:如何终止特定工作?

时间:2018-08-28 14:23:19

标签: php php-resque

我正在使用php-resque库,可以使用以下代码创建和跟踪作业。

$token = Resque::enqueue('queue', 'Job', NULL, true);

$statusTracker = new Resque_Job_Status($token);
$status = $statusTracker->get();

但是考虑到enqueue方法返回的令牌,该如何停止工作?

我在项目页面上找到了this,但是它没有使用工作令牌来停止工作,而是使用了工作人员ID。

考虑到我可能有多个工作人员,如何找到正在执行所请求工作的工作人员ID?

1 个答案:

答案 0 :(得分:0)

据我所知,Resqueue不支持“中止”或“停止”工作。 但是,如果您可以设法将取消操作保存在某种类型的数据库中,就可以了。您可以在performAction()中进行其他检查。像这样的东西

class My_Job {
    public function perform() {
        $wasCanceled = true;
        if( $wasCanceled ) {
            throw new Exception("Job was cancelled");
        }

        // Perform job stuff.
    }
}

最后但并非最不重要;如果在取消之前已经执行了作业,这可能并不总是有效。