수색…


작업 만들기

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();
    }
}

태스크의 $signaturemy:task 라고 가정하면 Schedule $schedule 오브젝트를 사용하여 위에 표시된대로 스케줄 할 수 있습니다. 위의 설명 된 줄에 표시된 것처럼 Laravel은 명령을 예약하는 다양한 방법을 제공합니다.

실행 스케쥴러 설정

스케줄러는 다음 명령을 사용하여 실행할 수 있습니다.

php artisan schedule:run

올바르게 작동하려면 매분마다 스케줄러를 실행해야합니다. 백그라운드에서 매분 스케줄러를 실행하는 다음 줄을 사용하여 cron 작업을 생성하여이 작업을 설정할 수 있습니다.

* * * * * php /path/to/artisan schedule:run >> /dev/null 2>&1


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow