Laravel 5 计划不起作用

2022-01-03 00:00:00 cron php laravel laravel-5

我的 Laravel 版本是 5.0.28,我在 cloud9 上构建,并且在我的 cron 中添加了这个命令:

My laravel version is 5.0.28, I build on cloud9, and I added this command to my cron:

#!/bin/bash
PATH=/usr/bin
* * * * * php /home/ubuntu/workspace/app/artisan scheduled:run 1>> /dev/null 2>&1

我在我的 Kernel.php 中添加了此代码.我参考了这个网站:https://laravel-news.com/2014/11/laravel-5-scheduler/

I added this code on my Kernel.php. I referenced this site: https://laravel-news.com/2014/11/laravel-5-scheduler/

<?php namespace AppConsole;

use IlluminateConsoleSchedulingSchedule;
use IlluminateFoundationConsoleKernel as ConsoleKernel;
use AppHttpControllersApiController;

class Kernel extends ConsoleKernel {

    protected $commands = [
        'AppConsoleCommandsInspire',
    ];

    protected function schedule(Schedule $schedule)
    {
        $schedule->call('ApiController@test_job')->hourly();
    }
}

我等了一会儿还是不行,所以我尝试使用命令php artisan schedule:run,我得到:没有准备好运行的预定命令.代码>

I waited and it still didn't work, so I tried to use the command php artisan schedule:run, and I got: No scheduled commands are ready to run.

我搜索并找到了这个答案:Laravel 5类不存在"使用调度器时

I searched and found this answer: Laravel 5 "Class does not exist" when using the scheduler

所以我修改了我的代码.另外,这段代码没有指定时间,所以我修改了我的 cron 来指定时间,但它仍然不起作用.我没有更多的想法.请帮忙.谢谢.

So I modified my code. Also, this code had no specified time, so I modified my cron to specify a time, but it still doesn't work. I have no more ideas. please help. Thanks.

代码

$schedule->call(join('@', [ApiController::class, 'test_job']));

cron

0 0,3,6,9,12,15,18,21 * * * php /home/ubuntu/workspace/app/artisan schedule:run 1>> /dev/null 2>&1
30 1,4,7,10,13,16,19,22 * * * php /home/ubuntu/workspace/app/artisan schedule:run 1>> /dev/null 2>&1

推荐答案

Laravel 调度程序 适用于命令,而不适用于控制器方法:

Laravel scheduler works with commands, not with controller methods:

  1. 创建命令:

php artisan make:command PurchasePodcast

  1. 编辑命令:

namespace AppConsoleCommands;

use IlluminateConsoleCommand;

class PurchasePodcast extends Command
{
    protected $name = 'purchase:podcast';

    public function fire()
    {
        // do stuff here
    }
}

  1. ConsoleKernel.php添加命令:

protected $commands = [
    'AppConsoleCommandsPurchasePodcast',
];

  1. 在调度程序中使用命令:

$schedule->command('purchase:podcast')->hourly();

相关文章