>  기사  >  PHP 프레임워크  >  Laravel에서 예약된 작업을 실행하는 방법

Laravel에서 예약된 작업을 실행하는 방법

PHPz
PHPz원래의
2023-04-14 09:16:443784검색

Laravel은 다양한 도구와 기능을 제공하는 인기 있는 PHP 프레임워크이며 그 중 하나는 예약된 작업입니다. 이번 글에서는 Laravel에서 예약된 작업을 실행하는 방법을 알아 보겠습니다.

먼저 Laravel은 예약된 작업을 쉽게 정의하고 실행할 수 있게 해주는 "스케줄러"라는 도구를 제공합니다. Laravel에서 스케줄러는 운영 체제의 cron 서비스를 사용하므로 대상 서버에서 cron 서비스가 시작되었는지 확인해야 합니다.

다음으로 Laravel에서 예약된 작업을 구현하는 방법을 단계별로 설명하겠습니다.

첫 번째 단계는 예약된 작업 클래스를 생성하는 것입니다.

Laravel에서는 IlluminateConsoleSchedulingSchedule 클래스를 상속하여 사용자 정의 예약된 작업 클래스를 생성할 수 있습니다. 이 클래스에는 예약된 작업의 실행 논리를 정의하기 위한 "handle"이라는 메서드가 포함되어 있어야 합니다. 예를 들어, 다음 코드를 사용하여 "SendEmail"이라는 작업 클래스를 생성합니다:

<?php

namespace App\Console\Commands;

use Illuminate\Console\Command;

class SendEmail extends Command
{
    protected $signature = &#39;email:send&#39;;

    protected $description = &#39;Send an email to users&#39;;

    public function handle()
    {
        // 定时任务执行的逻辑
    }
}

위의 예에서는 Laravel의 Command 클래스를 상속하는 "SendEmail"이라는 클래스를 정의합니다. 이 클래스에서는 작업을 트리거하는 "email:send" 명령과 "php artisan list" 명령이 실행될 때 표시되는 작업 설명을 정의합니다.

두 번째 단계는 예약된 작업을 등록하는 것입니다.

Laravel에서는 Kernel.php 파일을 사용하여 모든 예약된 작업을 등록할 수 있습니다. 이 파일은 "app/Console" 디렉터리에 있습니다. 이 파일에서는 "schedule" 메소드를 사용하여 모든 작업을 정의할 수 있습니다. 예를 들어 방금 생성한 SendEmail 작업을 1분마다 실행하려고 합니다. 코드는 다음과 같습니다.

protected function schedule(Schedule $schedule)
{
    $schedule->command('email:send')->everyMinute();
}

위의 예에서는 "everyMinute" 메서드를 사용하여 1분마다 실행되는 SendEmail 작업을 정의합니다.

세 번째 단계, 예약된 작업 시작

Laravel에서는 다음 명령을 실행하여 스케줄러를 시작할 수 있습니다.

* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1

그런 다음 위 명령을 cron 테이블에 추가하여 스케줄러가 실행 중인지 확인해야 합니다. 지정된 시간 내에 실행됩니다. 예를 들어 SendEmail 작업이 1분마다 실행되도록 설정한 경우 cron 테이블에 다음 명령을 추가해야 합니다.

* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1

위 예에서 " *"은 1분마다 실행한다는 의미입니다. .

이제 Laravel에서 예약된 작업을 성공적으로 구현했습니다. 프로덕션 환경이든 개발 환경이든 Laravel의 예약된 작업 기능은 일부 작업을 자동화하여 시간과 에너지를 절약하는 데 도움이 될 수 있습니다.

위 내용은 Laravel에서 예약된 작업을 실행하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.