설정 시간이 지나면 자동으로 분류가 변경되게 할수있을까요?
본문
이벤트 게시판 스킨을 만들고 있습니다.
진행중 | 종료
두개의 분류로 되어있구요.
마감시간을 wr_1에 저장해놓고 현재시간이 마감시간을 지나면 자동으로 글의 분류가 종료로 넘어가게 하고 싶습니다.
예를 들어 wr_1 의 값이 10:00 이라면 정확히 10:00 이 되면 분류가 종료로 넘어가게 할수있을까요?
답변 5
원리는 간단합니다.
1분마다 서버에서 할 필요도없고,
사용자가 누구던 접속을 할때에,
그 내용이 갱신되면 되는겁니다.
꼭 10시에 분류가 바껴야한다고 고정관념으로 생각하지마시고,
10시 40분에 누가 접속하고, 그 타이밍에 분류를 교체하더라도
그때 접속한 유저는 10시에 마감이되었다고 보이지, 10시 40분에 마감이되었다 보이지않을겁니다.
extend/user.config.php 파일을 만들어서
해당 게시물을 select 하고, 마감시간이 현재보다 과거라면
분류를 교체하는 쿼리를 실행하시면 간단합니다.
wr_1 의 값이 10:00 이라면 정확히 10:00 이 되면 <===굳이 이렇게 할 필요가 없습니다
위와 같이 지정된 시간을 찾아내서 변경하려면 크론으로 일정 시간마다 체크를 해야 하겠으나
웹호스팅에서는 크론을 사용할 수도 없거니와 그렇게 할 이유가 없겠습니다
실시간으로 다른 곳에서 API같은 것으로 내용을 추출해가는 것이 아니라면 굳이 시각에
딱 맞추어 변경해야할 이유가 없습니다
누군가(봇포함해서) 홈페이지에 접속하면 그 시점에 wr_1 값을 체크해서 변경해주면 됩니다
10:00로 지정 되어 있어도 11시에 누군가 접속해서 wr_1 시각 체크 후 변경을 하면
설정시각 10시에 변경되었는지 방금 변경 되었는지 누가 알겠어요?
wr_1에 등록 되는 시각이 어떤 값들인지 정확한 예시가 필요 합니다
10:00. 10:01, 10:02, 10:20, 10:50~~~~이런식으로 일정한 규칙이 없다면
매분마다 체크해서 변경해야 하니 디비 부하문제가 생기겠습니다
등록 되는 시각을 10분, 20분,30분 단위 등으로 설정해서
조건에 맞게 입력하도록 하면 체크 간격을 늘려서 부하를 줄일 수 있겟습니다
그리고 시각을 시:분 형식으로 등록하면 23:00 등록에 대해서 다음날 01:30에 체크 하려면
복잡해지니 년월일시분(2014-04-12 13:30)형식으로 등록하는 것이 좋겠습니다
30분 단위로 조건을 만든다면 다음처럼 합니다
extend 폴더에 화일을 하나 만듭니다( event_change.php)
<?php
$ctime = G5_SERVER_TIME;
$currd = substr(G5_TIME_YMDHIS, 0,16);
if( G5_SERVER_TIME - $config['cf_1'] > 1800){
sql_query("update $g5['config_table'] set cf_1='$ctime' ");
$event_table= $g5['write_prefix'].'event';
sql_query("update $event_table set ca_name='종료' where wr_1 < '$currd' ");
}
우선 시간때를 wr_1 여분필드 가 시작 시작으로 지정하고 wr_2를 종료시간으로 지정해보세요
그러고 나머지는 sql 조건문 으로 주면되거든요