crontab에서 매 5초마다 실행되게 한 후에...
본문
안녕하세요 초보가 며칠째 고민하다 이렇게 질문을 올립니다.
crontab에서
// 이건 1분마다
*/1 * * * * root curl --request GET 'http://127.0.0.1/get.php';
//이건 10초마다
*/1 * * * * root curl --request GET 'http://127.0.0.1/result.php';
*/1 * * * * root curl --request GET 'http://127.0.0.1/result.php' & sleep 10;
*/1 * * * * root curl --request GET 'http://127.0.0.1/result.php' & sleep 20;
*/1 * * * * root curl --request GET 'http://127.0.0.1/result.php' & sleep 30;
*/1 * * * * root curl --request GET 'http://127.0.0.1/result.php' & sleep 40;
*/1 * * * * root curl --request GET 'http://127.0.0.1/result.php' & sleep 50;
이렇게 작성했는데 아주 가끔씩 result에서 db에 중복 insert를 해서 고민중에
데이터 처리하는게 10초가 넘을 경우 db 중복 insert가 되는게 아닐까 생각하게 되었습니다.
이경우 cronttab에서 뭔가 설정을 해줄수 있는지 궁금합니다.
php상에서는
if ($row_chk['cnt'] > 0){
....................
}
중복이 됩니다.. 힌트라도 좀 부탁드립니다. ㅠㅠ
답변 2
크론작업 관리용 db 테이블을 하나 만드시고,
크론 동작 실행시 상태값 1로 인서트 , 끝나면 2 로 업데이트 해주세요.
http://127.0.0.1/result.php 에서
if( 상태값 1 인 카운트가 있으면 ) exit;
크론관리 테이블에 상태값 1 인서트
원하는 동작~~
크론관리 테이블에 상태값 1이었던것 2로 업데이트
끝
필드중 고유한값이 있으면 unique 처리를 하시면 중복입력이 안될겁니다.