我在使用laravel 5.3中的任务调度运行artisan queue:work
命令时遇到问题
<?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);
}
}
* * * * * /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分钟
答案 0 :(得分:0)
我在使用Ubuntu 16.04的Laravel 5.7中遇到了相同的问题:我的作业表中的作业正在排队但没有执行:
这就是我所做的:
SSH到您的服务器,即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
提示:如果您不使用共享托管,那会更好,因为许多共享托管服务都不允许您每分钟运行cron。 Digital Ocean提供的液滴套餐每月低至20美元。考虑使用Digital Ocean,AWS等设置自己的服务器。