AI Store에서 AI코딩으로 만들어진 앱을 만나보세요!
지금 바로 방문하기

라라벨 블로그 자동 게시 시스템 구축 가이드

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

웹 개발

대상자

  • 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 상태를 유지하여 관리자 검토 가능