IT News/PHP

리눅스 서버에서 주기적으로 php 파일 실행시키기 crontab (리눅스 스케줄)

skyLove1982 2016. 3. 28. 12:30
반응형

특정 로직을 실행하는 makeReort.php 파일이 있다고 합시다.

그리고 서버에서 매일 밤 12시에 이 파일을 실행한다고 할때에...

물론 makeReport.php 파일의 소스 파일은 절대 경로로 되어있어야 합니다. (만일 외부의 파일을 include 한다고 하면..)


crontab 은 cron table 의 찾아보니 약자이다. 정확한 내용은 하단에 url 주소를 클릭해서 확인해 보시기 바랍니다.


crontab -e

수성을 위해서 위 명령어를 입력해서 들어가보니.. 아무 내용도 없었습니다... 조금은 황당했지만..

그래도 혹시나 하는 마음에 아래와 같이 명령어를 입력하고 저장하고 나왔습니다.


0 0 * * * /usr/bin/php /var/www/html/makeReport.php

위의 명령어는 0분 0시 라는 의미이며

그 뒤에 * 표시는 적용한다는 의미?라고 보시면 될것 같습니다.

* 의 순서를 보면 몇일날에? 그리고 몇달에 한번씩? 그리고 주에 몇번? 이런 순서로 되어있습니다.

정확한 내용은 하단에 있는 url 주소를 확인해주세요. 그리고 makeReport.php 파일이 php 로 실행되어야 하기 때문에.. /usr/bin/php 라고 php가 설치된 주소를 주었고.. 그 php 가 실행되어야 할 makeReport.php 파일의 경로를 주었습니다.


아무튼 저장을 하고 나와서 아래와 같이 cron 을 재시작합니다.

service crond restart


그럼 이제 cron 이 제대로 동작하는지 밤12시에 확인해보던지..아니면 실행될 php 파일(여기서는 makeReport.php) 안에 log를 남겨 놓는 방식으로 확인을 해보셔야 됩니다. 물론 지정한 시간이 지나야 하겠지만요.



http://www.thegeekstuff.com/2011/07/php-cron-job/

http://kvz.io/blog/2007/07/29/schedule-tasks-on-linux-using-crontab/




참고적으로 서버시간 확인은 아래의 명령어를 쓰면 됩니다.

date



그리고 만일 웹에서 아래와 같이 Headers and client library minor version mismatch 오류가 나온다고 하면.. 

Warning: mysql_connect(): Headers and client library minor version mismatch. Headers:50162 Library:50524


아래의 경로로 들어가서 확인해보시기 바랍니다.

http://stackoverflow.com/questions/10759334/headers-and-client-library-minor-version-mismatch



참고로 아래의 예제는 php에서 파일을 생성해서 저장하는 예시입니다.

$file = 'forDebug.txt';

file_put_contents($file, "$logData\n", FILE_APPEND | LOCK_EX);



반응형