【问题标题】:Laravel run the queue job every secondLaravel 每秒运行一次队列作业
【发布时间】:2018-04-18 08:58:31
【问题描述】:

我创建了一个需要每秒运行的队列作业。我该怎么做?所以我使用artisan 命令创建了一个作业,但该作业不是每秒运行一次。我想我需要重新配置supervisor的一些配置文件。

【问题讨论】:

    标签: laravel queue


    【解决方案1】:

    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

    【讨论】:

    • 感谢您的回复。运行 sudo supervisorctl start laravel-worker:* 后出现生成错误。你能帮我吗?
    【解决方案2】:

    我已成功为此使用 Spatie's Short Schedule 包。

    【讨论】:

      【解决方案3】:

      您可以将 crontab 用于您的可排队作业。但 Cron 只允许至少一分钟。使用crontab -ehttps://crontab.guru/ 的帮助下设置您的日程安排,将此2 * * * * php /var/www/html/your-project-folder/artisan queue:work >> /dev/null 2>&1 添加到您每2 分钟运行一次的crontab -e

      你可以,你需要编写一个带有无限循环的 shell 脚本来运行你的任务,然后每秒休眠一次。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-03-20
        • 2018-03-22
        • 2018-02-18
        • 2014-04-12
        • 1970-01-01
        • 2016-08-14
        • 2017-12-02
        • 2017-01-03
        相关资源
        最近更新 更多