我使用的是php-resque库,可以使用以下代码创建和跟踪作业。
$token = Resque::enqueue('queue', 'Job', NULL, true);
$statusTracker = new Resque_Job_Status($token);
$status = $statusTracker->get();但是考虑到enqueue方法返回的令牌,如何停止作业呢?
我在项目页面上找到了this,但它不使用作业令牌来停止作业,而是使用工作id。
考虑到我可能有多个活动的worker,我如何才能找到正在执行所请求工作的worker id?
发布于 2018-08-29 18:38:03
据我所知,Resqueue不支持“中止”或“停止”作业。,但是,如果你能设法将cancel操作保存在某种数据库中,那就没问题了。您可以在performAction()中执行额外的检查。就像这样;
class My_Job {
public function perform() {
$wasCanceled = true;
if( $wasCanceled ) {
throw new Exception("Job was cancelled");
}
// Perform job stuff.
}
}最后但并非最不重要的一点是,当作业在取消之前已经执行时,这可能并不总是有效的。
https://stackoverflow.com/questions/52060194
复制相似问题