如何检查在Laravel中是否已完成Beanstalkd队列中的作业

Mar*_*łek 5 php beanstalkd task-queue laravel laravel-5

我需要检查添加到队列(Beanstalkd)的作业是否已在Laravel(Laravel 5)中完成,如果已完成,我需要返回更新的记录(任务添加到数据库中的队列更新记录).我加入了我的composer.json:

"pda/pheanstalk": "3.*"
Run Code Online (Sandbox Code Playgroud)

我以这种方式添加作业队列:

$jobId = Queue::push('App\Class', $object->toArray(), $this->getQueueName());
Run Code Online (Sandbox Code Playgroud)

我用以检查作业是否已完成使用以下功能:

public function find($queueName, $jobId, $recordId)
{
    $phean = Queue::getPheanstalk();

    try {
        $phean->peek($jobId);
        $data = ['status' => 'waiting'];
    } catch (ServerException $e) {
        $message = $e->getMessage();

        if ($message == 'NOT_FOUND: Job ' . $jobId . ' does not exist.') {
            $data = ... // here I get from database data for $recordId

        } else {
            $data = ['status' => 'error'];
        }
    }

    return $data;
}
Run Code Online (Sandbox Code Playgroud)

问题是 - 是否可靠的方法来检查工作是否已完成?我在这里比较我从异常中得到的消息.我还没有找到任何其他方法来检查工作是否已完成.

Edu*_*ruz 1

我还没有使用过 Laravel 5,但是在 Laravel 4 上,你有失败的作业表。您可以在其中查看哪些作业未完成。我假设 L5 可能有某些东西或保留相同的流程。那不能解决你的问题吗?

从我的角度来看,你似乎只是颠倒了观点。你不是在寻找失败的东西,而是在寻找有效的东西。

来源