정기 작업 (Crontab)
사이트를 운영하다 보면 탈퇴 회원 정보, 삭제된 사진의 섬네일, 오래된 알림 같은 불필요한 데이터가 쌓입니다. 정기 작업(Crontab)을 설정하면 자동으로 정리되어 디스크 공간과 성능을 지킬 수 있습니다.
개인 서버(SSH 접속 가능) 전용입니다. 웹 호스팅은 업체가 제공하는 cron 기능이 있는 경우에만 같은 명령을 등록할 수 있습니다.
실행 형식
php index.php 모듈명.스크립트명 [변수]설치 경로에서 PHP CLI로 실행합니다. 웹 주소로 호출하는 방식(웹크론)은 지원하지 않습니다.
제공되는 정리 스크립트
| 명령 | 하는 일 | 기본 기준 |
|---|---|---|
file.cleanGarbageFiles | 글에 연결되지 않은 첨부파일 정리 | 10일 |
file.cleanThumbnails | 오래된 섬네일 삭제 | 90일 |
file.cleanEmptyDirs | 빈 폴더 제거 | - |
module.cleanMiscLogs | 오래된 로그 삭제 | 30일 |
ncenterlite.cleanNotifications | 오래된 알림 제거 | - |
crontab 등록 예시
crontab -e 로 편집합니다. 과부하를 피해 새벽 시간대에 몇 분 간격으로 순차 실행하는 것을 권장합니다.
5 5 * * * cd /var/www/mysite && php index.php file.cleanGarbageFiles
10 5 * * * cd /var/www/mysite && php index.php file.cleanThumbnails
15 5 * * * cd /var/www/mysite && php index.php module.cleanMiscLogs
20 5 * * * cd /var/www/mysite && php index.php ncenterlite.cleanNotifications주의사항
- 웹서버와 같은 계정으로 실행하세요 (www-data 등). root의 crontab에 등록하면 생성되는 파일의 소유권이 어긋나 웹에서 접근하지 못하게 됩니다.
crontab -e -u www-data로 해당 계정에 등록할 수 있습니다. - 등록 후
files/cron.log에서 정상 동작을 확인하세요. - 리눅스 서버 기준입니다. 윈도우 서버는 작업 스케줄러로 같은 명령을 등록합니다.