【发布时间】:2018-04-18 08:58:31
【问题描述】:
我创建了一个需要每秒运行的队列作业。我该怎么做?所以我使用artisan 命令创建了一个作业,但该作业不是每秒运行一次。我想我需要重新配置supervisor的一些配置文件。
【问题讨论】:
我创建了一个需要每秒运行的队列作业。我该怎么做?所以我使用artisan 命令创建了一个作业,但该作业不是每秒运行一次。我想我需要重新配置supervisor的一些配置文件。
【问题讨论】:
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中设置一个worker连接,然后在supervisor上,在命令artisan queue:work中可以指定连接。在我发送的示例中使用的是 sqs,但您可以配置其他东西,例如 redis
【讨论】:
我已成功为此使用 Spatie's Short Schedule 包。
【讨论】:
您可以将 crontab 用于您的可排队作业。但 Cron 只允许至少一分钟。使用crontab -e 在https://crontab.guru/ 的帮助下设置您的日程安排,将此2 * * * * php /var/www/html/your-project-folder/artisan queue:work >> /dev/null 2>&1 添加到您每2 分钟运行一次的crontab -e。
你可以,你需要编写一个带有无限循环的 shell 脚本来运行你的任务,然后每秒休眠一次。
【讨论】: