본문

crontab을 이용해 php 파일 실행하기
0 0 10,539

crontab 설치는 검색을 하면 많기 때문에 생략..


crontab을 이용해 php 파일을 정해진 시간에 실행하는 코드를 알아보자.

아래 이미지처럼 crontab에서 스케줄 작성을 할 때 시간 형식을 잘 정해서 작성하면 된다.


7798b2f1a35c05fadb91ac0a98428c64_1711713781_795.png class=


시간 관련 사항이 다섯 자리로 * 는 기본값이 되며 * * * * * 가 결국 1분마다 실행하라는 의미가 된다.
10 21 * * * 은 매일 21시 10분 마다 실행
*/10 21 * * * 은 21시, 21시 10분, 21시 20분, 21시 30분, 21시 40분, 21시 50분으로 21시부터 10분 단위로 21시 50분까지 실행하라느 의미이다.
30 5 3-5 * * 은 매달 3일, 4일, 5일에 5시 30분에 실행을 해라
등등.. 시간 관련 사항은 위 이미지 규칙대로만 작성을 잘 해주면 된다.

그럼 정해진 시간에 php를 실행하려면 어떻게 하면 될까?
 


방법은 크게 2가지가 있다.


1) 도메인으로 접근을 해서 하는 방법으로 (도메인)/cron/test.php 파일을 실행하려면 아래와 같이 하면 된다.

매1분마다 실행한다고 하면


첫번째는
* * * * * wget -q --spider "https://도메인/cron/test.php" >> /var/log/test.log 2>&1


두번째는
* * * * * /usr/bin/curl -s -o /dev/null "https://도메인/cron/test.php" >> /var/log/test.log 2>&1


2) 내부에서 실행하는 방법으로 1)번보다 좋은 방법이다. test.php 파일의 절대주소로 작성을 하면 된다.

* * * * * /usr/bin/php -q /home/www/cron/test.php


1), 2) 모두 문제점이 있다. 

해당 test.php 파일의 위치가 웹으로도 쉽게 접근할 수 있는 위치에 있다는 것이다. 그래서, 위 2가지 방법 모두 아래와 같이 웹에서 접근하는 것을 막는게 좋다.

cron 폴더에 .htaccess 파일을 만들어서 해당 내용에 아래와 같이 작성해서 웹에서 접속하는 걸 막는게 좋다.

<Files *>
Order allow,deny
Allow from 123.12.123.12
</Files>

위에서 123.12.123.12는 서버 외부 아이피이다. ( 홈페이지 아이피이다 )

 


그리고 마지막 tip

crontab 작성도 잘 한거 같은데, 동작을 하지 않는거 같으면 아래 부분을 점검해라.

1) crontab을 작성하고 안전하게 restart를 실행하는게 좋다.

systemctl restart cron

2) test.php가 포함된 폴더의 권한을 crontab으로 주는게 좋다. home/www의 권한이 mstoria라면 아래와 같이 하면 된다.

chown -R mstoria:crontab /home/www/cron

3) 생행파일 test.php 파일에서 php 구문오류가 있어 동작을 하지 않는 경우가 있습니다. /var/log/test.log 파일의 로그를 확인해 보면 됩니다.

해당 콘텐츠는 엠스토리아 작가에 의해 공개 또는 유료로 제공되는 콘텐츠로 무단 갭쳐 및 불법 공유시 법적 제재를 받을 수 있습니다.
해당 M스토리는 무료로 제공중입니다.
구독을 통해 더 많은 M스토리를 만나보세요.
태그 ,

관련자료

댓글 0
등록된 댓글이 없습니다.
알림 0