我仍在使用Laravel 5.3。 (我很快升级,但我坚持用这个版本在那之前)。我已经创建了几个命令,并在我的kernal.php文件中注册它们。下面是一个例子:
class Kernel extends ConsoleKernel
{
protected $commands = [
// one off commands
Commands\Sproj\Command1::class,
Commands\Sproj\Command2::class,
Commands\Sproj\Command3::class,
Commands\Sproj\Command4::class,
// scheduled commands
Commands\ScheduledCommand1::class,
Commands\ScheduledCommand2::class,
Commands\ScheduledCommand3::class,
];
protected function schedule(Schedule $schedule)
{
$schedule->command('ScheduledCommand1')->dailyAt('14:00');
$schedule->command('ScheduledCommand2')->dailyAt('15:00');
$schedule->command('ScheduledCommand3')->dailyAt('16:00');
}
protected function commands()
{
require base_path('routes/console.php');
}
}
中的一个命令的一个例子是这样的:
class Command1 extends Command
{
protected $signature = 'sproj:command1';
protected $description = 'Command Example';
public function __construct()
{
parent::__construct();
}
public function handle()
{
echo 'Do something here';
}
}
我想要执行“一次性”的一个命令,所以我使用类似php artisan sproj:command1
这并不工作,但也执行所有我所创建的其他命令。即使我运行一个内置的命令,如php artisan cache:clear
,我所有的自定义命令正在运行
难道我做错了什么?
有同样的问题。我的问题是,我做的,而不是__construct()
方法在handle()
方法的调用。