【问题标题】:How to capture job queue details after completion in Laravel 5.1?在 Laravel 5.1 中完成后如何捕获作业队列详细信息?
【发布时间】:2016-02-21 21:05:22
【问题描述】:

在 Laravel 5.1 中,我希望在作业完成时收到通知,以及有关作业的详细信息(特别是 user_idcustomer_id)。我在AppServiceProvider 中使用Queue::after 方法方法作为Laravel suggests

如果像这样转储$data 参数:

Queue::after(function ($connection, $job, $data) {
    var_dump($data);
    exit;
});

我得到以下信息:

array(2) { ["job"]=> string(39) "Illuminate\Queue\CallQueuedHandler@call" ["data"]=> array(1) { ["command"]=> string(263) "O:23:"App\Jobs\ExportContacts":4:{s:7:"*data";a:5:{s:7:"user_id";s:1:"2";s:10:"customer_id";s:1:"1";s:6:"filter";N;s:5:"dates";a:2:{i:0;i:1445352975;i:1;i:1448034975;}s:4:"file";s:31:"/tend_10-20-2015-11-20-2015.csv";}s:5:"queue";N;s:5:"delay";N;s:6:"*job";N;}" } }

data 数组包含我所追求的 user_idcustomer_id。这是伟大的。但是我如何解析这个响应来提取这些信息。

我唯一的想法是使用正则表达式。但我想我会检查一下是否有更好的方法?

【问题讨论】:

    标签: php laravel laravel-5 queue


    【解决方案1】:

    对于 Laravel 5.2:

    Queue::after(function (JobProcessed $event) {
        $command = unserialize($event->data['data']['command']);
    });
    

    【讨论】:

      【解决方案2】:

      数据被序列化。您只需:
      $command = unserialize($data['data']['command']);

      【讨论】:

        【解决方案3】:

        我认为您不需要从data 获取数据。我将向您展示 Queue::later 的简单用法

        $yourData = $data_which_you_need;
        
        $date = Carbon::now()->addMinutes(10);
        
        Queue::later($date, function($job) use ($yourData){
            // THIS CODE WILL BE EXECUTE AFTER 10 MINUTES
            $user_id = $yourData['user_id'];
            User::find($user_id)->destroy();
            $job->delete();
        });
        

        希望对你有帮助

        【讨论】:

        • 谢谢@alarmata。但这只会延迟工作的执行,对吗?我不想让它被延迟,我只是想在特定作业完成运行时收到通知,这样我就可以在完成后执行其他任务......
        【解决方案4】:

        有没有办法将传递给作业的变量拉入队列:之后?你必须使用正则表达式吗?即使在对其大量数据进行反序列化之后。

        仍然无法从刚刚进入 queue::after 的作业中提取数据

        【讨论】:

          猜你喜欢
          • 2019-11-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-11-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多