PHP 를 매일 일정한 시간에 주기적으로 실행해야 할 경우가 있다.
리눅스의 crontab 기능을 이용하여 PHP 파일을 실행하기 위해 알아야 할 사항
1. PHP 코드에 DB 연결하는 파일 정보는 절대경로로 적어야 한다.
include "/home/httpd/db.info.php";
include "/home/httpd/dbClass.php";
2. PHP 코드 상단에 한줄 적어줄 내용
!#/usr/local/php/bin/php -q
<?php
include "/home/httpd/db.info.php";
include "/home/httpd/dbClass.php";
PHP 소스코드
?>
※ crontab 에서 직접 PHP 코드를 호출해서 돌리는 경우에는 위와 같이 하면 된다.
첫줄 !#/usr/local/php/bin/php -q 은 PHP 파일의 절대경로인데
파일의 위치를 모르면
리눅스 Shell 상에서 whereis php 로 찾으면 된다.
그리고 해당 경로로 들어가서 실제 php 파일이 있는 곳을 확인해야 한다.
이제 crontab 에 스케쥴할 사항을 등록하자.
1. 크론탭 수정하는 방법
crontab -e
입력화면에서 입력하려면 i 를 눌러 insert 모드로 변경하고
스케쥴링할 내용을 적어준다.
15 23 * * * wget -O - -q -t 1 http://IP주소/xml/web_member.php
를 붙여넣기 한 다음에 저장하고 나온다.
2. 크론탭 시작
service crond start
이 두가지 사항만 하면 매일같이 정해진 시간(23시 15분)에 실행된다.
다른 방법으로 할 경우
shell 스크립트 파일을 작성해서 스크립트 파일을 돌리는 경우에는
shell script
15 23 * * * /home/httpd/xml/cron_member.sh
shell script 파일 안에는
echo "Insert and Update member table of MySQL database..."
/usr/local/php/bin/php -f /home/httpd/xml/cron_member.php
처럼 작성된 코드가 포함되어야 한다.
cron_member.php 파일에는
DB 파일의 경로는 절대경로를 반드시 적어줘야 한다.
shell script 를 만들어서 사용하는 경우
몇가지 처리를 하나의 스크립트에서 해야 할 때 효과적이다.
2시 5분에 스크립트가 자동으로 실행된다.
5 2 * * * /usr/local/php/bin/php /usr/local/apache/htdocs/accessLog.php
만약 매 5분마다 실행하고 싶다면
*/5 * * * * /usr/local/php/bin/php /usr/local/apache/htdocs/accessLog.php
로 해주면 된다.