2017-01-10 98 views
-1

我正在使用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,然後等待一分鐘,它不再更新狀態

有沒有人可以幫助我?

回答

0

您還應該在本地Web服務器上設置cron以運行cron作業。

0

如何手動更改狀態? 你在數據庫中更改它? 也許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