컨텐츠 정보
본문
crontab 설치는 검색을 하면 많기 때문에 생략..
crontab을 이용해 php 파일을 정해진 시간에 실행하는 코드를 알아보자.
아래 이미지처럼 crontab에서 스케줄 작성을 할 때 시간 형식을 잘 정해서 작성하면 된다.
방법은 크게 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 파일의 로그를 확인해 보면 됩니다.
-
등록일 2024.04.15
-
등록일 2024.04.15
-
등록일 2024.04.05
-
등록일 2024.03.29