繁体   English   中英

Laravel工匠命令队列的任务计划程序:工作在共享主机中不起作用

[英]Laravel task scheduler for artisan command queue:work not working in shared hosting

我在Laravel 5.3中使用任务计划来运行artisan queue:work命令时遇到问题

app / Console / Kernel.php代码

<?php

namespace App\Console;

use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;

class Kernel extends ConsoleKernel {
    protected $commands = [];

    \Log::info('schedule:run');
    protected function schedule(Schedule $schedule)
    {
        $schedule->command('queue:work --tries=3')
            ->everyMinute()
            ->withoutOverlapping()
            ->evenInMaintenanceMode()
            ->sendOutputTo(storage_path() . '/queue-logs/queue-jobs.log', true);
    }
}

我在服务器中设置了cron作业:

* * * * * /usr/local/bin/php /home/s***app/public_html/artisan schedule:run

我登录\\Log::info('schedule:run'); 每分钟在/queue-logs/queue-jobs.log文件中。 但是命令queue:work --tries=3不起作用,存储在作业表中的队列未处理。

另外,我的托管服务提供商还会阻止我的每分钟请求,建议我将cron运行到15分钟而不是1分钟

我在使用Ubuntu 16.04的Laravel 5.7中遇到了相同的问题:作业表中的作业正在排队但未执行:

这是我所做的:

ssh username@ip到您的服务器,即ssh username@ip

然后运行sudo nano /etc/crontab

在文件内添加以下行* * * * * username php /var/www/your_laravel_project/artisan schedule:run >> /dev/null 2>&1

确保您不要在这里忘记此部分: /artisan项目文件夹之后。 我犯了这个错误,我的cron没有运行。

说明:

.---------------- minute (0 - 59)
| .------------- hour (0 - 23)
| | .---------- day of month (1 - 31)
| | | .------- month (1 - 12) OR jan,feb,mar,apr ...
| | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
| | | | |
* * * * * user-name command-to-be-executed

然后运行sudo systemctl restart cron以重新启动cron服务。

您也可以使用sudo systemctl status cron

提示:如果您不使用共享托管,那就更好了,因为许多共享托管服务都不允许您每分钟运行克朗。 Digital Ocean提供的液滴套餐每月低至20美元。 考虑使用Digital Ocean,AWS等设置您自己的服务器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM