라라벨 블로그 자동 게시 시스템 구축 가이드
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
웹 개발
대상자
- PHP/Laravel 개발자
- 난이도: 중간 (Laravel 스케줄러 및 크론잡 기초 지식 필요)
핵심 요약
- 데이터베이스 필드 정의
publish
(0: 초안, 1: 게시, 2: 예약)publish_date
(예약 시간)- 커스텀 Artisan 명령어 생성
AutoPublishBlogs
명령어로publish=2
상태의 글 자동 게시php artisan blogs:auto-publish
실행 시publish_date
가 지난 글을publish=1
로 업데이트- 크론잡 설정
crontab -e
를 통해 매분php artisan schedule:run
실행- Laravel 스케줄러가 자동으로 예약된 글 확인
섹션별 세부 요약
1. 데이터베이스 구조
publish
필드 추가0
: 초안 상태1
: 공개 상태2
: 예약 상태publish_date
타임스탬프 필드 추가- 예약 시간을 저장
2. Artisan 커맨드 생성
php artisan make:command AutoPublishBlogs
명령어로 커맨드 생성handle()
메서드 내 로직- 현재 시간(
$now
)과publish_date
비교 publish_date
가 지난 글을publish=1
로 업데이트- 로그 및 콘솔 출력으로 처리 결과 확인
3. 커맨드 등록 및 스케줄 설정
App\Console\Kernel.php
에 커맨드 등록$commands
배열에AutoPublishBlogs::class
추가- 스케줄러 설정
schedule()
메서드 내everyMinute()
으로 매분 실행blogs:auto-publish
명령어 매핑
4. 크론잡 설정
- 시스템 크론잡 설정
```bash
- cd /path/to/laravel && php artisan schedule:run >> /dev/null 2>&1
```
- Laravel 스케줄러가 매분 실행되어 예약된 글 확인
5. 테스트 및 검증
- 수동 테스트
publish=2
상태의 글 생성 후publish_date
설정- 시간 경과 후 자동 게시 확인
- 수동 실행
php artisan schedule:run
명령어로 즉시 실행 가능- 프론트엔드 검증
Blog::where('publish', 1)
으로만 공개된 글 표시
결론
- 핵심 팁:
publish_date
필드와publish
상태를 통해 글 생명주기 관리php artisan schedule:run
명령어로 스케줄러를 수동으로 실행하여 즉시 테스트 가능- 크론잡 설정 시 Laravel 프로젝트 경로에 맞게
cd
명령어 수정 필수 - 실무 적용 시
- 스케줄러 실행 주기를
everyMinute()
에서 필요에 따라hourly()
등으로 조정 가능 - 예약된 글이 아닌 경우
publish=0
상태를 유지하여 관리자 검토 가능