수색…
작업 만들기
Artisan을 사용하여 Laravel에서 작업 (콘솔 명령)을 생성 할 수 있습니다. 커맨드 라인에서 :
php artisan make:console MyTaskName
이렇게하면 app / Console / Commands / MyTaskName.php에 파일이 생성됩니다. 다음과 같이 보입니다.
<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
class MyTaskName extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'command:name';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Command description';
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
/**
* Execute the console command.
*
* @return mixed
*/
public function handle()
{
//
}
}
이 정의에서 중요한 일부는 다음과 같습니다.
-
$signature
속성은 사용자의 명령을 식별합니다. Artisan을 사용하여php artisan command:name
을 실행하여 명령 줄을 통해 나중에이 명령을 실행할 수 있습니다php artisan command:name
(여기서command:name
은 명령의$signature
와 일치 함) -
$description
속성은 사용할 수있게되었을 때 명령 옆에있는 Artisan의 도움말 / 사용법 표시입니다. -
handle()
메소드는 명령에 대한 코드를 작성하는 곳입니다.
결국 Artisan을 통해 작업을 명령 줄에서 사용할 수있게됩니다. protected $signature = 'command:name';
이 클래스의 속성은 실행하는 데 사용합니다.
작업을 사용 가능하게 만들기
Artisan과 app / Console / Kernel.php 파일에서 작업을 사용 가능하게 만들 수 있습니다.
Kernel
클래스에는 $commands
라는 배열이 포함되어있어 응용 프로그램에서 명령을 사용할 수 있습니다.
Artisan 및 응용 프로그램에서 사용할 수 있도록이 배열에 명령을 추가하십시오.
<?php
namespace App\Console;
use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
class Kernel extends ConsoleKernel
{
/**
* The Artisan commands provided by your application.
*
* @var array
*/
protected $commands = [
Commands\Inspire::class,
Commands\MyTaskName::class // This line makes MyTaskName available
];
/**
* Define the application's command schedule.
*
* @param \Illuminate\Console\Scheduling\Schedule $schedule
* @return void
*/
protected function schedule(Schedule $schedule)
{
}
}
이 작업이 완료되면 Artisan을 사용하여 명령 줄을 통해 명령에 액세스 할 수 있습니다. 명령에 my:task
설정된 $signature
속성이 있다고 가정하면 다음 명령을 실행하여 작업을 실행할 수 있습니다.
php artisan my:task
작업 스케줄링
응용 프로그램에서 명령을 사용할 수있게되면 Laravel을 사용하여 CRON과 마찬가지로 미리 정의 된 간격으로 실행하도록 예약 할 수 있습니다.
app / Console / Kernel.php 파일에는 작업을 예약하는 데 사용할 수있는 schedule
방법이 있습니다.
<?php
namespace App\Console;
use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
class Kernel extends ConsoleKernel
{
/**
* The Artisan commands provided by your application.
*
* @var array
*/
protected $commands = [
Commands\Inspire::class,
Commands\MyTaskName::class
];
/**
* Define the application's command schedule.
*
* @param \Illuminate\Console\Scheduling\Schedule $schedule
* @return void
*/
protected function schedule(Schedule $schedule)
{
$schedule->command('my:task')->everyMinute();
// $schedule->command('my:task')->everyFiveMinutes();
// $schedule->command('my:task')->daily();
// $schedule->command('my:task')->monthly();
// $schedule->command('my:task')->sundays();
}
}
태스크의 $signature
이 my:task
라고 가정하면 Schedule $schedule
오브젝트를 사용하여 위에 표시된대로 스케줄 할 수 있습니다. 위의 설명 된 줄에 표시된 것처럼 Laravel은 명령을 예약하는 다양한 방법을 제공합니다.
실행 스케쥴러 설정
스케줄러는 다음 명령을 사용하여 실행할 수 있습니다.
php artisan schedule:run
올바르게 작동하려면 매분마다 스케줄러를 실행해야합니다. 백그라운드에서 매분 스케줄러를 실행하는 다음 줄을 사용하여 cron 작업을 생성하여이 작업을 설정할 수 있습니다.
* * * * * php /path/to/artisan schedule:run >> /dev/null 2>&1