laravel 异步队列问题

发布于 2022-09-11 18:09:58 字数 551 浏览 28 评论 0

在上传csv文件,需要对文件里的一些数据做处理,便使用了异步队列来处理。
先创建了一个模型的监听,在数据保存后将分发任务

 public function saved(Import $import)
    {
      dispatch(new AsyncHandleImportData($import));
    }

每保存一条数据,就有一个任务分发给队列,数据处理后存储在另外一个表(a)中。在任务的处理中,我需要传递过来的数据和a表里的数据比对,但是发现一个问题,任务像是并行的。例如我插入了2000条数据,有2000个任务。在执行后并没有如我预期的,先执行的任务数据已经插入a表,后面执行的任务获取到a表里的数据,进行对比,似乎是所有任务执行时获取的a表数据全部是空的。等于这些数据没有经过处理又全部插入a表了。

 if($this->exist){
        //预期中一些数据应该走这里
 }else{
            //全部走这里
        }
        
        
        有大佬能解答一下么?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

假扮的天使 2022-09-18 18:09:58

你这个程序不完整。可能性有很多:

  1. 你读表时候的数据库链接是否成功建立。
  2. 你的$this->exist获取是否合法。
  3. 你在获取不到数据的时候是否有添加重试机制。
  4. 你是否通过在handle()里面加Log来检测各项数据是否成功导入或执行。
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文