리눅스 crond 사용하면서 딜레이를 주고 싶어요.
본문
안녕하세요
*/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 실행되도 바로 종료가 됩니다.
답변을 작성하시기 전에 로그인 해주세요.