我正在使用Windows。
\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 :(得分:0)
您还应该在本地Web服务器上设置cron以运行cron作业。
答案 1 :(得分:0)
如何手动更改状态? 你在数据库中更改它? 也许cron正在运行,但数据库中的“id”等于'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