Laravel App проверяет базу данных redis на наличие данных, отправленных сторонней организацией.
Laravel Scheduler запускает команду artisan php artisan check:redis
каждые 10 минут.
Я ожидаю, что около 20 000 записей будут проверяться каждый часв часы пик.Просьба также предложить мне, если весь мой подход в целом некорректен.
- Планировщик запускает команду
check:redis
каждые 10 минут 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()
Sidenote: Каждое отправленное задание будет иметь имя модели, полезную нагрузку и будетбыть динамически вставленным в указанную таблицу путем проверки и / или проверки, как требуется, что, очевидно, требует времени. (Ниже приведен пример модели / полезной нагрузки). Вот где вся идея обработки очереди заданий.
{
model : "Profession",
payload: {
id: '......',
name: '........',
contract_type: '........',
employment_type: '........',
department: '........'
.... and like 20 other fields...
}
}