리눅스 crond 사용하면서 딜레이를 주고 싶어요. 채택완료
안녕하세요
</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개
디비 이용하시면 될 것 같습니다.
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개
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인