Я использую PHP-спасательное Библиотека и задания могут быть созданы и отслежены с помощью следующего кода.
$token = Resque::enqueue('queue', 'Job', NULL, true);
$statusTracker = new Resque_Job_Status($token);
$status = $statusTracker->get();
Но с учетом токена, возвращенного enqueue
метод, как можно остановить работу?
я нашел этот на странице проекта, но он не использует маркер задания, чтобы остановить работу, вместо этого он использует идентификатор работника.
Учитывая, что у меня может быть несколько активных рабочих, как я могу найти рабочий идентификатор, который выполняет запрошенную работу?
Насколько я знаю, Resqueue не поддерживает «прерывание» или «остановку» заданий. Но если вам удастся каким-то образом сохранить действие отмены в какой-либо БД, все будет в порядке. Вы можете сделать дополнительную проверку в executeAction (). Что-то вроде;
class My_Job {
public function perform() {
$wasCanceled = true;
if( $wasCanceled ) {
throw new Exception("Job was cancelled");
}
// Perform job stuff.
}
}
Последний, но тем не менее важный; это может не всегда работать, когда задания уже выполнены до отмены.
Других решений пока нет …