为什么我的cron job laravel 5.3不能在localhost上工作?

问题描述:

我正在使用windows。为什么我的cron job laravel 5.3不能在localhost上工作?

我对\app\Console\Kernel.php代码是这样的:

<?php 

namespace App\Console; 

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

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

    protected function schedule(Schedule $schedule) 
    { 
     $schedule->command('custom:command') 
       ->everyMinute(); 
    } 

    protected function commands() 
    { 
     require base_path('routes/console.php'); 
    } 
} 

我对\app\Console\Commands\CustomCommand.php代码是这样的:

<?php 

namespace App\Console\Commands; 

use Illuminate\Console\Command; 
use DB; 

class CustomCommand extends Command 
{ 
    protected $signature = 'custom:command'; 

    protected $description = 'test cron job to update status on table order'; 

    public function __construct() 
    { 
     parent::__construct(); 
    } 

    public function handle() 
    { 
     $id = 1; 
     DB::table('orders') 
      ->where('id', $id) 
      ->update(['status' => 2, 'canceled_at' => date("Y-m-d H:i:s")]); 
    } 
} 

我跑php artisan list看到我的cron作业

找到我的cron后作业(自定义:命令),然后我像这样运行我的cron作业:php artisan custom:command

它成功更新状态= 2.之后,我手动将状态更改为1,然后等待一分钟,它不再更新状态

有没有人可以帮助我?

您还应该在本地Web服务器上设置cron以运行cron作业。

如何手动更改状态? 你在数据库中更改它? 也许cron正在运行,但'id'int数据库等于'2',也许这就是为什么你没有看到任何改变!

如果你找一个更好的办法来检查是否cron作业工作

只需添加日志会发怒日志文件

public function handle() 
{ 
    Log::info('Cron job working'); // you can also print variables 
    $id = 1; 
    DB::table('orders') 
     ->where('id', $id) 
     ->update(['status' => 2, 'canceled_at' => date("Y-m-d H:i:s")]); 
} 

不要忘记了登录到您的来源:

namespace App\Console\Commands; 

use Illuminate\Console\Command; 
use DB; 
use Log; // Here 

class CustomCommand extends Command