티스토리 뷰
반응형
Laravel 11에서도 **스케줄링(Scheduling)**은 이전 버전과 마찬가지로 강력하고 직관적인 방식으로 제공됩니다. 다만, Laravel 11은 디렉터리 구조와 일부 설정 방식이 모듈화되고 간소화된 점이 있어서 이전 버전과 약간의 차이가 있을 수 있다..
🛠 Laravel 11에서의 Scheduling 기본 설정
1. 서버 Crontab에 등록 (변함 없음)
서버에 아래 cron을 한 줄만 등록하세요:
* * * * * cd /your-project-path && php artisan schedule:run >> /dev/null 2>&1
이 한 줄로 Laravel은 매 분마다 스케줄러를 실행하고, 내부에서 조건에 맞는 작업만 처리합니다.
2. 스케줄 정의 파일 위치
Laravel 11에서는 Console\Kernel.php가 최소화되었고, Artisan 명령어도 모듈화되었습니다.
하지만 여전히 스케줄은 app/Console/Kernel.php 파일에 정의합니다.
// app/Console/Kernel.php
use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
class Kernel extends ConsoleKernel
{
protected function schedule(Schedule $schedule): void
{
$schedule->command('emails:send')->dailyAt('09:00');
}
}
3. Artisan 커맨드 만들기
php artisan make:command SendEmailReport
생성된 커맨드는 app/Console/Commands/SendEmailReport.php에 위치하고, 내부는 이렇게 구성합니다:
namespace App\Console\Commands;
use Illuminate\Console\Command;
class SendEmailReport extends Command
{
protected $signature = 'emails:send';
protected $description = '이메일 리포트를 전송합니다.';
public function handle(): void
{
// 이메일 전송 로직
logger('이메일 전송 완료');
}
}
✅ 자주 쓰는 스케줄링 메서드
| 메서드 | 설명 |
| ->everyMinute() | 매 분마다 |
| ->everyFiveMinutes() | 5분마다 |
| ->hourly() | 매 시간마다 |
| ->daily() | 매일 자정 |
| ->dailyAt('13:00') | 매일 오후 1시 |
| ->weeklyOn(1, '8:00') | 매주 월요일 오전 8시 |
| ->cron('*/10 * * * *') | cron 표현식 사용 가능 |
⚙️ 추가 옵션들
- 중복 방지
$schedule->command('emails:send')->withoutOverlapping();
- 출력 로그 저장
$schedule->command('emails:send')->appendOutputTo(storage_path('logs/emails.log'));
- 조건부 실행
$schedule->command('emails:send')->when(fn () => now()->isWeekday());
🧪 Laravel 11 스케줄러 테스트
로컬에서 테스트하려면 schedule:work를 사용할 수도 있어요:
php artisan schedule:work
이 명령은 지속적으로 돌아가면서 작업을 실시간으로 체크합니다.
반응형
'배움 > PHP' 카테고리의 다른 글
| Laravel 11 Eloquent: Relationships 연관관계 (0) | 2025.04.25 |
|---|---|
| PHP HTML parser 방법 (0) | 2025.04.17 |
| Lavavel Console Command Argument 옵션 (0) | 2025.04.15 |
| Laravel 의 Concurrency 기능 (0) | 2025.04.14 |
| PHP Carbon (1) | 2025.04.11 |
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- facades
- eclipse
- fromArray
- call_user_func
- laravel 12
- Laravel
- jp:a
- privatechannel
- laravel 11
- array_combine
- createfromformat
- PYTHON
- reflectionclass
- wsl
- uniqid
- eloquent
- 명령어
- mysql
- 비동기
- laravel 테스트
- 설치
- php
- swagger
- WSL2
- curl_multi_init
- flask
- 설정
- ob_get_contents
- ubuntu
- OpenAI GPT
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
글 보관함
