将数据推送到Laravel中排队

时间:2018-12-10 10:50:32

标签: php laravel queue jobs

Laravel应用程序检查redis数据库中是否有第三方推送的数据。

Laravel Scheduler每10分钟运行工匠命令php artisan check:redis

我希望在高峰时间每小时检查大约2万条记录。如果我的整体方法有缺陷,也请提出建议。

  1. 计划程序每10分钟运行一次check:redis命令
  2. check:redis命令应调度要排队的作业
  3. 队列稍后将处理作业并根据需要创建行。

下面是handle()中的App\Console\Commands\CheckRedis方法

public function handle()
{
  while(Redis::llen('schema_queue')){
    dispatch(new CheckRedisJob($redis->rpop('schema_queue')))
  }
}

这是App\Jobs\CheckRedisJob

public function handle()
{
    Stage::create([
        'model' => $this->entity->model,
        'payload' => json_encode($this->entity->payload)
    ]);
}

现在,当我运行命令时,它不是在排队而是直接创建Stage::create()

中的内容。

侧面说明:分派的每个作业都将具有模型名称和有效负载,并将通过根据需要进行验证和/或检查来动态地插入到指定的表中,这显然需要时间。(下面是示例模型/有效负载)整个工作队列的想法是。

{
  model : "Profession",
  payload: {
              id: '......',
              name: '........',
              contract_type: '........',
              employment_type: '........',
              department: '........'
              .... and like 20 other fields...

           }
}

0 个答案:

没有答案