특정 시간마다 쿼리문을 자동으로 실행하게 할 수 있는 방법이 있을까요? 정보
특정 시간마다 쿼리문을 자동으로 실행하게 할 수 있는 방법이 있을까요?
본문
게시판 목록에서 일정 시간마다 쿼리문을 실행시킬 수 있는 방법이 있을까요>???
우선 여분필드 1번에 1이라는 값이 입력이 되어있다고 가정하고..
5월 15일 23:00:00초에 글을 작성을 한다면..
1일전의 글(5월 14일 23:00:00초)의 여분필드 1번에 여분필드 1번의 1이라는 값이 0이라는 값으로 변경되게 할려고 하거든요..
어떻게 접근을 해야할지 모르겠네요.ㅠㅠ
우선 여분필드 1번에 1이라는 값이 입력이 되어있다고 가정하고..
5월 15일 23:00:00초에 글을 작성을 한다면..
1일전의 글(5월 14일 23:00:00초)의 여분필드 1번에 여분필드 1번의 1이라는 값이 0이라는 값으로 변경되게 할려고 하거든요..
어떻게 접근을 해야할지 모르겠네요.ㅠㅠ
댓글 전체
$now_time = date("Y-m-d", time());//현재시간
$del_time = date("Y-m-d", time()-3600*24*7);
이렇게 시간은 구했는데..
mysql_query("UPDATE auction SET wr_10=1 WHERE $now_time < $del_time ");
이런식으로 했는데 쿼리문이 실행이 안되네요.ㅠㅠ
어느 부분이 잘못됐는지 모르겠어요..
자동으로 실행되게 할려면 어떻게 해야할까요??
for(;;){
위의 쿼리문 실행
sleep(60);
}
이런식으로 무한루프를 주면.. 1분마다 쿼리문이 실행이 정상적으로 될까요??
그러면 여분필드 10번의 값이 자동으로 1로 바뀌는지 ..잘 안되네요.ㅠㅠ
근데..안되네요.ㅠㅠ
$del_time = date("Y-m-d", time()-3600*24*7);
이렇게 시간은 구했는데..
mysql_query("UPDATE auction SET wr_10=1 WHERE $now_time < $del_time ");
이런식으로 했는데 쿼리문이 실행이 안되네요.ㅠㅠ
어느 부분이 잘못됐는지 모르겠어요..
자동으로 실행되게 할려면 어떻게 해야할까요??
for(;;){
위의 쿼리문 실행
sleep(60);
}
이런식으로 무한루프를 주면.. 1분마다 쿼리문이 실행이 정상적으로 될까요??
그러면 여분필드 10번의 값이 자동으로 1로 바뀌는지 ..잘 안되네요.ㅠㅠ
근데..안되네요.ㅠㅠ
1. 일단 쿼리가 틀렸습니다
UPDATE auction SET wr_10=1 WHERE $now_time < $del_time 이렇게 실행하면 오류가 나죠
$now_time 가 현재 시간인데 그럼 칼럼명이 현재시간 (ex. 124519487 ) 이런식으로 되어있어야 합니다.
그리고 현재시간은 삭제시간(어제시간) 보다 작을수 없으므로 이 쿼리는 무조건 실행이 안됩니다.
2. 자동 실행의 경우 cron 으로 처리하시는걸 추천드립니다.
3. 현재 등록초 까지 비교해서 어제 같은 시간,초 에 적은 데이타가 있으면 데이타를 갱신 시키는 건데
이경우 등록된 초까지 동일해야 하므로 값이 갱신안될 확률이 많이 높습니다.
초까지 꼭 비교해야 하는지 확인해 보셔야 하겠네요
결론
일단 여분필드를 업데이트 시켜야 하는 이유와 업데이트 조건을 다시 생각해 보셔야 할꺼 같습니다.
UPDATE auction SET wr_10=1 WHERE $now_time < $del_time 이렇게 실행하면 오류가 나죠
$now_time 가 현재 시간인데 그럼 칼럼명이 현재시간 (ex. 124519487 ) 이런식으로 되어있어야 합니다.
그리고 현재시간은 삭제시간(어제시간) 보다 작을수 없으므로 이 쿼리는 무조건 실행이 안됩니다.
2. 자동 실행의 경우 cron 으로 처리하시는걸 추천드립니다.
3. 현재 등록초 까지 비교해서 어제 같은 시간,초 에 적은 데이타가 있으면 데이타를 갱신 시키는 건데
이경우 등록된 초까지 동일해야 하므로 값이 갱신안될 확률이 많이 높습니다.
초까지 꼭 비교해야 하는지 확인해 보셔야 하겠네요
결론
일단 여분필드를 업데이트 시켜야 하는 이유와 업데이트 조건을 다시 생각해 보셔야 할꺼 같습니다.
아..쿼리가..ㅠㅠ 문제군요..
초까지는 비교를 할 필요가 없어요..
단순하게 년월일의 날짜만 비교하면 되거든요..
시간이나 분 초는 의미가 없이
날짜로 구분해서 오늘 등록했을경우 1일전것의 글을 업데이트 한다면..
날짜로 1일전만 비교해서 wr_10번의 값을 0에서 1로만 변경해주면 됩니다.
크론은.. 어떻게 하는건지 전혀 몰라서.ㅠㅠ
어휴~~ 머리가 뽀재길 것 같네요.ㅠㅠ
초까지는 비교를 할 필요가 없어요..
단순하게 년월일의 날짜만 비교하면 되거든요..
시간이나 분 초는 의미가 없이
날짜로 구분해서 오늘 등록했을경우 1일전것의 글을 업데이트 한다면..
날짜로 1일전만 비교해서 wr_10번의 값을 0에서 1로만 변경해주면 됩니다.
크론은.. 어떻게 하는건지 전혀 몰라서.ㅠㅠ
어휴~~ 머리가 뽀재길 것 같네요.ㅠㅠ
오늘 등록했을경우 라는 조건이 달린다면
게시판스킨의
write_update.skin.php 파일을 만드셔서
$bday = date("Y-m-d" , mktime (0,0,0,date("m"), date("d")-1, date("Y")))
mysql_query("UPDATE $write_table SET wr_10=1 WHERE substring(wr_datetime,1,10) = '".$bday."' ");
일케 해주시면 될꺼 같네요
근데 저렇게 쿼리를 하면 어제날짜에 등록된 모든글이 업데이트 되므로
뒤에 mb_id 비교 같은 조건문이 더붙어야 겠네요
게시판스킨의
write_update.skin.php 파일을 만드셔서
$bday = date("Y-m-d" , mktime (0,0,0,date("m"), date("d")-1, date("Y")))
mysql_query("UPDATE $write_table SET wr_10=1 WHERE substring(wr_datetime,1,10) = '".$bday."' ");
일케 해주시면 될꺼 같네요
근데 저렇게 쿼리를 하면 어제날짜에 등록된 모든글이 업데이트 되므로
뒤에 mb_id 비교 같은 조건문이 더붙어야 겠네요
예. 어제 등록된 글은 모두 적용되도 상관없어요..
예를들어 1일전으로 설정을 해 놨다면 1일 전이든 2일 전이든 모든 글들에 wr_10번 값이 1로 변경되도 상관이 없습니다.
write_update.skin.php 스킨을 만들면..바로 자동으로 적용이 될까요??
제가 잘 몰라서요..
누군가 글을 써야만 적용이 되는것이 아닐까요??
write파일에서 글쓰기를 하면 write_update파일을 거쳐서 업데이트가 되는걸로 알고있어서요..
내가 쓴글 다른 회원이 쓴 글만 따로 적용되는게 아니라 글쓴이와 상관없이 모든글에 대해서 특정기간이 지난 날짜의 글에는 무조건 게시글 목록에서 wr_10의 값이 1로 변경되게 할려고 합니다.
검색중에 본 내용이..
while문이나 for문을 무한루프로 돌려서..
업데이트를 실행하고
sleep(날짜);
sleep를 이용해서 1일의 값을 넣으면 1일마다 자동으로 실행된다고 한 내용이 있던데..
적용을 해 봐도 잘 안되더라구요.
마인드님이 올려주신 쿼리문을 write_update.skin.php파일에 넣었는데.. 빈 화면에서 멈춰버리네요.ㅠㅜ
예를들어 1일전으로 설정을 해 놨다면 1일 전이든 2일 전이든 모든 글들에 wr_10번 값이 1로 변경되도 상관이 없습니다.
write_update.skin.php 스킨을 만들면..바로 자동으로 적용이 될까요??
제가 잘 몰라서요..
누군가 글을 써야만 적용이 되는것이 아닐까요??
write파일에서 글쓰기를 하면 write_update파일을 거쳐서 업데이트가 되는걸로 알고있어서요..
내가 쓴글 다른 회원이 쓴 글만 따로 적용되는게 아니라 글쓴이와 상관없이 모든글에 대해서 특정기간이 지난 날짜의 글에는 무조건 게시글 목록에서 wr_10의 값이 1로 변경되게 할려고 합니다.
검색중에 본 내용이..
while문이나 for문을 무한루프로 돌려서..
업데이트를 실행하고
sleep(날짜);
sleep를 이용해서 1일의 값을 넣으면 1일마다 자동으로 실행된다고 한 내용이 있던데..
적용을 해 봐도 잘 안되더라구요.
마인드님이 올려주신 쿼리문을 write_update.skin.php파일에 넣었는데.. 빈 화면에서 멈춰버리네요.ㅠㅜ
일단 자동 실행 부분은 cron 으로 돌리세요
for 문으로 돌려서 sleep 를 하려면 기본적으로 해당 페이지를 계속 열어둬야 합니다.
빈화면에서 멈춘다면 에러를 잡으시면 될꺼 같은데요
$bday = date("Y-m-d" , mktime (0,0,0,date("m"), date("d")-1, date("Y")))
mysql_query("UPDATE $write_table SET wr_10=1 WHERE substring(wr_datetime,1,10) = '".$bday."' ");
echo $bday ."<br>"."UPDATE $write_table SET wr_10=1 WHERE substring(wr_datetime,1,10) = '".$bday."' "
exit();
이런식으로 쿼리랑 날짜값을 찍어보셔서 해당 쿼리를 db 에서 직접 실행시켜보세요
for 문으로 돌려서 sleep 를 하려면 기본적으로 해당 페이지를 계속 열어둬야 합니다.
빈화면에서 멈춘다면 에러를 잡으시면 될꺼 같은데요
$bday = date("Y-m-d" , mktime (0,0,0,date("m"), date("d")-1, date("Y")))
mysql_query("UPDATE $write_table SET wr_10=1 WHERE substring(wr_datetime,1,10) = '".$bday."' ");
echo $bday ."<br>"."UPDATE $write_table SET wr_10=1 WHERE substring(wr_datetime,1,10) = '".$bday."' "
exit();
이런식으로 쿼리랑 날짜값을 찍어보셔서 해당 쿼리를 db 에서 직접 실행시켜보세요
감사합니다.^^
말씀하신대로 크론으로 돌리고 적어주신 쿼리문을 응용해서 작업하니 정상적으로 되네요~~
나중에 한번 내려오시면 식사라도 한끼~~ㅎㅎ
다시한번 감사드립니다.
말씀하신대로 크론으로 돌리고 적어주신 쿼리문을 응용해서 작업하니 정상적으로 되네요~~
나중에 한번 내려오시면 식사라도 한끼~~ㅎㅎ
다시한번 감사드립니다.
넓은마인드님은 참 성실하게 답변 해주시네요 ^^
초보로써 너무 감사한 분입니다.
초보로써 너무 감사한 분입니다.
궁금하던 내용인데 도움이 되었습니다~^^