Laravel 5计划不起作用

lig*_*ter 8 php cron laravel laravel-5

我的laravel版本是5.0.28,我在cloud9上构建,我将此命令添加到我的cron:

#!/bin/bash
PATH=/usr/bin
* * * * * php /home/ubuntu/workspace/app/artisan scheduled:run 1>> /dev/null 2>&1
Run Code Online (Sandbox Code Playgroud)

我在我的上面添加了这段代码Kernel.php.我引用了这个网站:https://laravel-news.com/2014/11/laravel-5-scheduler/

<?php namespace App\Console;

use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
use App\Http\Controllers\ApiController;

class Kernel extends ConsoleKernel {

    protected $commands = [
        'App\Console\Commands\Inspire',
    ];

    protected function schedule(Schedule $schedule)
    {
        $schedule->call('ApiController@test_job')->hourly();
    }
}
Run Code Online (Sandbox Code Playgroud)

我等了,它仍然没有用,所以我尝试使用命令php artisan schedule:run,我得到了:No scheduled commands are ready to run.

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

所以我修改了我的代码.此外,此代码没有指定的时间,所以我修改了我cron的指定时间,但它仍然无法正常工作.我没有更多的想法.请帮忙.谢谢.

$schedule->call(join('@', [ApiController::class, 'test_job']));
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

Gri*_* P. 16

首先测试cron是否在您的服务器或localhost类型中运行:

> sudo service cron status
Run Code Online (Sandbox Code Playgroud)

如果没有安装:

> sudo apt-get install cron
Run Code Online (Sandbox Code Playgroud)

启用laravel的调度程序:

> crontab -e
Run Code Online (Sandbox Code Playgroud)

如果不直接打开vim,你可以选择一个编辑器.一定要在底部输入这一行:

* * * * * php /path_from_root_to_laravel_proj_folder/artisan schedule:run 1>> /dev/null 2>&1
Run Code Online (Sandbox Code Playgroud)

要测试你是否在调度程序中设置了laravel,请从projects文件夹运行:

>php artisan schedule:run
Run Code Online (Sandbox Code Playgroud)

这应该执行任务并告诉你正在做什么.


Lim*_*nte 9

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

  1. create命令:
php artisan make:command PurchasePodcast
Run Code Online (Sandbox Code Playgroud)
  1. 编辑命令:
namespace App\Console\Commands;

use Illuminate\Console\Command;

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

    public function fire()
    {
        // do stuff here
    }
}
Run Code Online (Sandbox Code Playgroud)
  1. 添加命令到Console\Kernel.php:
protected $commands = [
    'App\Console\Commands\PurchasePodcast',
];
Run Code Online (Sandbox Code Playgroud)
  1. 在调度程序中使用命令:
$schedule->command('purchase:podcast')->hourly();
Run Code Online (Sandbox Code Playgroud)

  • 我修改了我的 cron `* * * * * php /home/ubuntu/workspace/app/artisan schedule:run 1&gt;&gt; /dev/null 2&gt;&amp;1`,我的时间表就像你的 `$schedule-&gt;command(' purchase:podcast')-&gt;hourly();`,我尝试运行 `php artisan schedule:run`,我收到这个消息`没有准备运行的预定命令。`,这是为什么?如果我将我的日程表修改为 `$schedule-&gt;command('purchase:podcast')-&gt;cron('* */1 * * *');`,它将运行。 (2认同)