Я создал задание очереди, которое нужно запускать каждую секунду. Как мне это сделать? Итак, я создал задание с помощью команды artisan
, но задание не запускается каждую секунду. Я думаю, мне нужно перенастроить некоторые файлы конфигурации супервизора.
Laravel запускает задание очереди каждую секунду
Ответы (2)
В документации Laravel есть примеры именно этого. проверьте https://laravel.com/docs/5.6/queues#supervisor-configuration а>
Примеры по умолчанию
[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/html/yourproject/artisan queue:work sqs --sleep=3 --tries=3
autostart=true
autorestart=true
user=forge
numprocs=8
redirect_stderr=true
stdout_logfile= /var/www/html/yourproject/storage/logs/worker.log
Обратите внимание, что вам нужно установить рабочее соединение в config/queues.php
, а затем на супервизоре, в команде artisan queue:work
вы можете указать соединение. в примере, который я отправил, используется sqs, но вы можете настроить другие вещи, такие как redis
Вы можете использовать crontab для своего задания в очереди. Но Cron допускает только минимум одну минуту. Используйте crontab -e
, чтобы установить свое расписание с помощью https://crontab.guru/, добавьте это 2 * * * * php /var/www/html/your-project-folder/artisan queue:work >> /dev/null 2>&1
в свой crontab -e
который ходит каждые 2 минуты.
Что бы вы могли, вам нужно написать сценарий оболочки с бесконечным циклом, который запускает вашу задачу, а затем засыпает на каждую секунду.