0

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

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

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

但是给定方法返回的令牌enqueue,如何停止作业呢?

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

考虑到我可能有不止一名工作人员处于活动状态,我如何才能找到正在执行所请求工作的工作人员 ID?

4

1 回答 1

0

据我所知,Resqueue 不支持“中止”或“停止”作业。但是,如果您能以某种方式设法将取消操作保存在某种数据库中,那么您会没事的。您可以在 performAction() 中进行额外检查。就像是;

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

        // Perform job stuff.
    }
}

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

于 2018-08-29T10:38:03.333 回答