root09
@root09

Laravel бесконечный Task Scheduling?

Есть таблица, в ней есть записи, нужно по очереди проходить по каждой записи и выполнять функцию, и так по кругу.

Как это можно сделать через Task Scheduling или может быть как-то иначе?

Сейчас создал команду и вызываю ее вот так $schedule->command('command:start')->everyMinute();

В ней работаю с одной строкой таблицы и в след запуск команды со следующей строкой и так по кругу. Но это не эффективный метод, ибо функция выполняется секунд за 5, а остальные 55 секунд простаивает. Как можно это сделать иначе?
  • Вопрос задан
  • 122 просмотра
Пригласить эксперта
Ответы на вопрос 2
@Barmunk
В нужной команде добавь бесконечный цикл и в нем уже логику.
while(true) 
{
    doWork();
    sleep(1);
}


Далее скорми эту команду какому-нибудь Supervisor

[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php artisan command:start
autostart=true
autorestart=true
stopasgroup=true
killasgroup=true
user=forge
numprocs=8
redirect_stderr=true
stdout_logfile=/home/forge/app.com/worker.log
stopwaitsecs=3600


или вот натолкнулся на пакет, который делает тоже самое, но без Supervisor
https://github.com/aarondfrancis/laravel-pseudo-daemon

Неплохая статья по демонам на php
https://blog-programmista.ru/post/75-php-kak-sozda...
Ответ написан
Комментировать
ivinnic
@ivinnic
Full-Stack - подустал
Похоже на Queues. Может быть вам подойду именно очереди Docs
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы