Php 使用laravel队列在数据库中存储数据

Php 使用laravel队列在数据库中存储数据,php,laravel,queue,jobs,Php,Laravel,Queue,Jobs,我试图使用laravel队列在数据库中存储数据。我想向用户显示一条快速消息“您的文件正在导入”,并希望使用队列存储数据。我在env文件中将数据库用作队列驱动程序。当我尝试存储数据时,它会在jobs表中创建条目,但不会在demo\u tbl中存储任何内容 以下是我迄今为止所做的工作- 控制器 public function import(Request $request) { Excel::filter('chunk')->load($request->file('import

我试图使用laravel队列在数据库中存储数据。我想向用户显示一条快速消息“您的文件正在导入”,并希望使用队列存储数据。我在env文件中将数据库用作队列驱动程序。当我尝试存储数据时,它会在jobs表中创建条目,但不会在demo\u tbl中存储任何内容

以下是我迄今为止所做的工作-
控制器

public function import(Request $request)
{
    Excel::filter('chunk')->load($request->file('import_file')->getRealPath())->chunk(250, function($reader)
    {
        $this->dispatch(new ImportDistributor($reader->toArray()));
    });

    dd('your file is being imported. we will inform you once it is done.');
}
工作-

<?php
namespace App\Jobs;

use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;

use App\Model\DemoTableModel;

use DB;

class ImportDistributor implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    /**
     * Create a new job instance.
     *
     * @return void
     */
   protected $data;

    public function __construct(array $request)
    {
        $this->data = $request;
    }

    public function handle()
    {
        if(isset($this->data) && !empty($this->data))
        {
            foreach($this->data as $val)
            {
                DemoTableModel::insert($val);
            }
        }
    }
}    

如果您使用的是队列,您可能正在执行一些耗时的任务,希望
Laravel
异步处理这些任务。您放入作业数据库的任务需要由
Laravel
队列工作者
逐个获取

你必须手动打电话

$ php artisan queue:work
告诉artisan启动队列工作人员

请查阅Laravel的官方文档:


您是否在本地机器上进行测试?@MayuriPansuriya是的,我正在本地机器上测试您是否启动了队列工作程序?是的,我启动了队列工作程序,但仍然存在相同的问题。是的,使用了php artisan queue:work并在作业表上反映更改,但不在演示中存储数据_tbl@Deepak@Deepak
php artisan queue:work
调用队列工作者实际处理作业表中的任务。如果运行该命令,请检查是否有任何输出表明工作人员正在处理您的作业,如果是,请检查输出是否表明处理成功(并且作业表中的条目将自动删除)。另外,请检查jobs表以查看Tryts字段,以检查队列工作人员是否尝试在超出默认限制时间的情况下处理您的任务。在这种情况下,请检查作业中的逻辑,看看是否正确。我运行了php artisan queue:work,它显示[2018-10-11 05:21:38][998]处理,但没有收到任何成功消息。如果我在这种情况下将队列驱动程序更改为同步,它将数据存储在demo\u tbl中。@Deepak您可以检查作业表以查看作业表中的条目是否减少吗?作业条目中的
尝试
列显示了什么,0或更大?首先,尝试列的值为1,但最后为255。
$ php artisan queue:work