Всем привет. Есть модель с 700к записями в базе. По каждой записи нужно провести небольшую калькуляцию и сохранить результат в другую таблицу. Пушу это все дело в очередь, которую обрабатывает Horizon. Проблема в том, что сам по себе Horizon с необходимым кол-вом воркеров делает все достаточно шустро, но конкретно сама постановка в очередь остается узким местом для такого объема данных. Выбрать такое количество записей а потом сделать foreach + dispach не подходит по понятным причинам (memory leak). Например есть вот такой вариант: PHP: // Выбираем только id модели, а саму модель в джобе Model::select('id')->get()->each(function ($item) { dispatch(new Job($item->id)); }); Сама по себе итерация с помощью курсора очень шустрая, например если вместо dispatch() просто вывести точку, то на 700к записей это займет ~15 сек. Но вызов драйвера очереди 700к раз в одном процессе - out of memory. В данный момент пробую сделать что-то типа пагинации - разбить 700к записей на чанки, по 50к например, и работать уже с ними (с помощью нового механизма JobsBatching: https://laravel.com/docs/8.x/queues#job-batching) но пока это все дело падает в средине процесса, разбираюсь. Возможно кто-то сталкивался или имеет мысли по этому поводу, буду благодарен за совет.