为什么我的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