Baa*_*ako 5 php cron laravel laravel-5
我想知道如何安排一个cron作业每天00:01运行.
我JOB
在App/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中这样做了.我错过了什么?
我想知道如何安排一个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
并查看输出.