리눅스 crond 사용하면서 딜레이를 주고 싶어요.

리눅스 crond 사용하면서 딜레이를 주고 싶어요.

QA

리눅스 crond 사용하면서 딜레이를 주고 싶어요.

답변 1

본문

안녕하세요 


*/1 * * * * /usr/bin/wget -O /dev/null -q --tries=1 http://127.0.0.1/api/api.php

CentOS에서 crond로 php를 주기적으로 실행하고 있습니다.


api.php에서 조건문에 해당하면 쿼리를 실행하고 해당하지 않으면 아무 행동도 하지 않습니다.


여기서 제가 원하는 것은 api.php를 1분마다 실행을 하지만 api.php 파일 내 조건문에 해당하면

쿼리를 실행한 뒤 20분 딜레이(sleep)를 갖고 다시 1분마다 실행되는 것입니다.


crond + php 만으로는 구현이 어려울까요?


※ 정리

가. 1분마다 php 반복 실행

나. api.php 파일 내 조건문에 해당하면 쿼리 실행 후 20분(sleep) 뒤 다시 1분마다 php 실행

다. 조건문에 해당하지 않으면 계속 1분마다 php 실행


구현하려면 어떻게 해야하나요?

도움좀 부탁드립니다.

이 질문에 댓글 쓰기 :

답변 1

디비 이용하시면 될 것 같습니다.

api 란 테이블을 만들고 

datetime 이란 컬럼을 만드시고요.



api.php 시작 부분에서 datetime를 가져온 뒤 datetime 값이 현재시간보다 크다면, 


if(  datetime > date() )

 exit;



이후 조건 문에서 해당 사항이 된다면, 

datetime = date("Y-m-d H:i:s", strtotime("+20mins"));

위에 datetime 값을 업데이트 합니다.


이리 하면 20분 동안 api.php 실행되도 바로 종료가 됩니다.

답변을 작성하시기 전에 로그인 해주세요.
전체 4
© SIRSOFT
현재 페이지 제일 처음으로