我正在使用php-resque库,可以使用以下代码创建和跟踪作业。
$token = Resque::enqueue('queue', 'Job', NULL, true);
$statusTracker = new Resque_Job_Status($token);
$status = $statusTracker->get();
但是考虑到enqueue
方法返回的令牌,该如何停止工作?
我在项目页面上找到了this,但是它没有使用工作令牌来停止工作,而是使用了工作人员ID。
考虑到我可能有多个工作人员,如何找到正在执行所请求工作的工作人员ID?
答案 0 :(得分:0)
据我所知,Resqueue不支持“中止”或“停止”工作。 但是,如果您可以设法将取消操作保存在某种类型的数据库中,就可以了。您可以在performAction()中进行其他检查。像这样的东西
class My_Job {
public function perform() {
$wasCanceled = true;
if( $wasCanceled ) {
throw new Exception("Job was cancelled");
}
// Perform job stuff.
}
}
最后但并非最不重要;如果在取消之前已经执行了作业,这可能并不总是有效。