STAGE 16 · Lv.81
스케줄 포스팅 고급 전략
wp_schedule_event로 커스텀 크론 간격을 설정하고, 발행 큐 관리, 타임존 처리, 놓친 크론 복구 시스템까지 구축합니다.
WordPress 크론 시스템 완벽 이해
WP-Cron vs 서버 Cron: 근본적 차이
WordPress의 크론 시스템(WP-Cron)은 서버 크론과 근본적으로 다릅니다. 서버 크론(crontab)은 운영체제 수준에서 정확한 시간에 명령을 실행하지만, WP-Cron은 누군가 사이트를 방문할 때 예약된 작업이 있는지 확인하고 실행하는 "의사 크론(pseudo-cron)" 시스템입니다.
이 설계는 WordPress가 다양한 호스팅 환경(공유 호스팅 포함)에서 동작하기 위한 것입니다. 하지만 트래픽이 적은 사이트에서는 크론이 실행되지 않을 수 있고, 트래픽이 많은 사이트에서는 동시에 여러 크론이 실행되어 서버 부하를 유발할 수 있습니다.
이 강의에서는 WP-Cron의 한계를 이해하고, 서버 크론으로의 전환, 커스텀 크론 간격 설정, 발행 큐 시스템, 타임존 처리, Missed Schedule 자동 복구까지 프로덕션 레벨의 스케줄링 시스템을 구축합니다.
WP-Cron
방문자 의존 실행 방식
서버 Cron
OS 레벨 정확한 실행
발행 큐
순서 기반 자동 발행 관리
타임존
글로벌 시간대별 최적화
| 비교 항목 | WP-Cron | 서버 Cron (crontab) |
|---|---|---|
| 실행 트리거 | 사이트 방문 시 | OS 스케줄러에 의해 정확한 시간에 |
| 정확성 | 트래픽에 따라 부정확 | 초 단위로 정확 |
| 설정 방법 | PHP 코드 (wp_schedule_event) | 서버 crontab 또는 제어판 |
| 최소 간격 | 제한 없음 (1초도 가능) | 1분 |
| 서버 접근 필요 | 불필요 (코드만) | SSH 또는 호스팅 제어판 |
| 트래픽 없을 때 | 실행 안 됨 | 정상 실행 |
| 서버 부하 | 매 요청마다 크론 체크 | 설정된 간격으로만 실행 |
| 권장 환경 | 저트래픽 개인 블로그 | 비즈니스 사이트, 자동화 시스템 |
방문자
접속
접속
WP-Cron
체크
체크
예약 시간
경과 확인
경과 확인
작업
실행
실행
다음 실행
예약
예약
서버 크론으로 전환하기
프로덕션 환경의 필수 설정
자동 콘텐츠 발행 시스템을 운영한다면, WP-Cron을 비활성화하고 서버 크론으로 전환하는 것이 필수입니다. WP-Cron은 트래픽에 의존하므로, 새벽 시간에 예약된 글이 다음 날 오전에야 발행되는 Missed Schedule 문제가 빈번하게 발생합니다.
// 1단계: wp-config.php에 WP-Cron 비활성화 추가
// wp-config.php 파일의 "That's all" 주석 위에 추가
define('DISABLE_WP_CRON', true);
// 이 설정은 방문자 요청 시 WP-Cron이 자동 실행되는 것을 방지합니다.
// 대신 서버 crontab이 정해진 간격으로 wp-cron.php를 호출합니다.
# 2단계: 서버 crontab 설정
# SSH 접속 후 crontab 편집
crontab -e
# 1분마다 WP-Cron 실행 (가장 정확한 설정)
* * * * * cd /var/www/html && php wp-cron.php > /dev/null 2>&1
# 또는 wget 방식 (5분마다)
*/5 * * * * wget -q -O /dev/null https://your-site.com/wp-cron.php?doing_wp_cron
# 또는 curl 방식 (5분마다)
*/5 * * * * curl -s https://your-site.com/wp-cron.php?doing_wp_cron > /dev/null
# 멀티사이트인 경우 WP-CLI 사용
*/5 * * * * cd /var/www/html && wp cron event run --due-now --allow-root > /dev/null 2>&1
# 크론 실행 로그를 남기려면
* * * * * cd /var/www/html && php wp-cron.php >> /var/log/wp-cron.log 2>&1
crontab 설정 시 주의사항
1. PHP 경로 확인:
2. 사용자 권한: 웹서버 사용자(www-data, apache, nginx)의 crontab에 등록해야 합니다. root crontab에 등록하면 파일 권한 문제가 발생할 수 있습니다.
3. HTTPS 필수: wget/curl 방식 사용 시 반드시 HTTPS URL을 사용하세요. HTTP를 사용하면 리디렉션 문제가 발생할 수 있습니다.
4. 1분 간격 vs 5분 간격: 1분 간격이 가장 정확하지만, 서버 리소스가 제한적이면 5분 간격으로 설정하세요. 대부분의 경우 5분 간격이면 충분합니다.
which php 명령으로 PHP 실행 파일의 정확한 경로를 확인하세요. 일부 서버에서는 /usr/bin/php, /usr/local/bin/php 등 경로가 다릅니다.2. 사용자 권한: 웹서버 사용자(www-data, apache, nginx)의 crontab에 등록해야 합니다. root crontab에 등록하면 파일 권한 문제가 발생할 수 있습니다.
3. HTTPS 필수: wget/curl 방식 사용 시 반드시 HTTPS URL을 사용하세요. HTTP를 사용하면 리디렉션 문제가 발생할 수 있습니다.
4. 1분 간격 vs 5분 간격: 1분 간격이 가장 정확하지만, 서버 리소스가 제한적이면 5분 간격으로 설정하세요. 대부분의 경우 5분 간격이면 충분합니다.
🔒
여기까지는 미리보기입니다
스케줄 포스팅 고급 전략
무료 가입하면 이어서 볼 수 있고, 강의를 완료할 때마다 XP와 레벨이 쌓입니다.
Google로 3초 만에 시작 →🧵 Threads로 시작무료 공개 강의 둘러보기 (Lv.1~3)무료 가입하면 이어서 볼 수 있고, 강의를 완료할 때마다 XP와 레벨이 쌓입니다.