安排cron工作laravel

Baa*_*ako 5 php cron laravel laravel-5

我想知道如何安排一个cron作业每天00:01运行.

JOBApp/Jobs文件夹中创建了

<?php
namespace App\Jobs;
use App\Models\Result;
use App\Jobs\Job;
use Illuminate\Contracts\Bus\SelfHandling;
use DB;

set_time_limit(0);

class UpdateActive extends Job implements SelfHandling
{
    public static function ActiveUpdate()
    {
        Result::update(['draw_id' => 1, 
                        'isactive' => 0
                       ]);
     }

   public static function downGrade()
   {
   try {
        UserRole::update(['permission' => 1,
                         'isactive' => 2    
        ]);
   } catch (QueryException $e ) {
     //handle error
   }
   }

   public static function handle() 
   {
     self::ActiveUpdate();
     self::downGrade();
   }
 }
Run Code Online (Sandbox Code Playgroud)

在App/Console/Kernel.php中我已将此链接添加到该schedule方法

protected function schedule(Schedule $schedule)
    {
        /*$schedule->command('inspire')
                 ->hourly(); */
        $schedule->call(function () {
            $check_draw = \App\Jobs\UpdateActive::ActiveUpdate();

        })->everyMinute();
    }
Run Code Online (Sandbox Code Playgroud)

请注意我已将everyMinute用于测试目的

crontab -e我然后补充说

* * * * * php /home/vagrant/Code/projects/artisan schedule:run 1>> /dev/null 2>&1

但我认为时间表似乎没有运行,因为当我检查我的results表时,该isactive字段没有改变.

我想知道我哪里出错了.如果有人在L5中这样做了.我错过了什么?

rya*_*ter 7

我想知道如何安排一个cron作业每天00:01运行.

所以你希望它每天00:01运行?

回答:

protected function schedule(Schedule $schedule)
{
    $schedule->call(function () {
        $check_draw = \App\Jobs\UpdateActive::ActiveUpdate();
    })->dailyAt("00:01");
}
Run Code Online (Sandbox Code Playgroud)

旁白:(根据您的意见编辑)

我就是这样做的:

命令:

<?php

namespace App\Console\Commands;

use Illuminate\Console\Command;

class UpdateActiveCommand extends Command
{
    protected $signature = 'update-active';

    protected $description = 'Update something?';

    public function handle()
    {
        try {
            $this->comment("Update active...");
            $this->updateActive();

            $this->comment("Downgrade...");
            $this->downGrade();

            $this->info("Done!");
        } catch (QueryException $e ) {
            $this->error($e->getMessage());
        }
    }

     private function updateActive()
     {
        Result::update([
            'draw_id'  => 1, 
            'isactive' => 0,
        ]);
     }

     private function downGrade()
     {
        UserRole::update([
            'permission' => 1,
            'isactive'   => 2,
        ]);
     }
}
Run Code Online (Sandbox Code Playgroud)

调度程序:

<?php

namespace App\Console;

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

class Kernel extends ConsoleKernel
{
    protected $commands = [
        \App\Console\Commands\UpdateActiveCommand::class,
    ];

    protected function schedule(Schedule $schedule)
    {
        $schedule->command('update-active')
                 ->dailyAt('00:01')
                 ->sendOutputTo(storage_path('logs/update-active.log'))
                 ->emailOutputTo('baako@baako.com');
    }
}
Run Code Online (Sandbox Code Playgroud)

如果你这样做,你也可以从命令行运行它php artisan update-active并查看输出.