Laravel应用程序检查redis数据库中是否有第三方推送的数据。
Laravel Scheduler每10分钟运行工匠命令php artisan check:redis
。
我希望在高峰时间每小时检查大约2万条记录。如果我的整体方法有缺陷,也请提出建议。
check:redis
命令check:redis
命令应调度要排队的作业下面是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...
}
}