테스트 사이트 - 개발 중인 베타 버전입니다

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

탬니 8년 전 조회 2,390

안녕하세요 

</p><p>*/1 * * * * /usr/bin/wget -O /dev/null -q --tries=1 <a href="<a href="http://127.0.0.1/api/api.php" target="_blank" rel="noopener noreferrer">http://127.0.0.1/api/api.php</a>"><a href="http://127.0.0.1/api/api.php" target="_blank" rel="noopener noreferrer">http://127.0.0.1/api/api.php</a></a>
</p><p>

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개

채택된 답변
+20 포인트
잉끼s
8년 전

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

api 란 테이블을 만들고 

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

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

if(  datetime > date() )

 exit;

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

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

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

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

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

탬니
8년 전
이런 방법도 있네요. 답변 감사합니다.

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인