게시판 wr_10 (이벤트 종료 날짜) 의 값이 지난 경우 자동으로 분류 업데이트
본문
제목 그대로 wr_10 에는 날짜데이터가 담겨있습니다. ex)20201214 이런 형식의 날짜데이터
wr_10 은 이벤트 종료 날짜입니다.
오늘 날짜가 종료 날짜보다 큰 경우 해당 게시글의 분류를 '진행중' 에서 '종료' 로
자동 업데이트가 되게 구현하려고 합니다.
리스트 페이지 접속시 실행될 쿼리를 짰는데요;;
생각해낸게 list.skin.php 파일에서 $list[$i]['wr_10'] 을 가져오고,
$today = str_replace('-', '', G5_TIME_YMD); 로 오늘 날짜를 가져와서
두 날짜를 비교해서 '진행중'인 게시글중 종료날짜가 지났으면 ca_name 을 '종료' 로 업데이트를 시켰는데
list.skin.php 파일에서 하는게 맞나요?? 지금 당장이야 테스트 게시글로 하는거라 상관없다지만
게시글이 많아질 경우에 리스트 페이지를 진짜 오랜만에 접속하는 경우 다량의 업데이트가 발생할텐데
이런 경우 생길 이슈...등등을 고려했을때 어느 페이지에서 업데이트 쳐주는 작업을 하시나요??ㅠㅠㅠ
<?php for ($i=0; $i<count($list); $i++) {
$classes = array();
$classes[] = 'gall_li';
$classes[] = 'col-gn-'.$bo_gallery_cols;
if( $i && ($i % $bo_gallery_cols == 0) ){
$classes[] = 'box_clear';
}
if( $wr_id && $wr_id == $list[$i]['wr_id'] ){
$classes[] = 'gall_now';
}
$today = str_replace('-', '', G5_TIME_YMD); // 오늘 날짜
if( $list[$i]['wr_10'] < $today ){ // 종료 이후 분류 자동 업데이트
/*
현재 종료 날짜(wr_10)가 지났고, 진행중 카테고리인 게시글은 자동으로 종료 카테고리로 업데이트
*/
$sql = " update {$write_table} set ca_name = '종료' where ca_name = '진행중' and wr_10 < {$today} ";
sql_query($sql);
}
?>
답변 4
그누보드 config 테이블의 cf_10 에 실행 날짜 정보를 기록하고,
cf_10 날짜 정보가 오늘과 다를 경우 실행시키면 1일 1회만 실행됩니다.
list.skin.php 에 넣어도 됩니다.
if ($config['cf_10'] != date('Y-m-d')) {
// (업데이트문)
$sql = "update {$g5['config_table']} set cf_10 = '" . G5_TIME_YMD . "' ";
sql_query($sql);
}
크론으로 설정하시면 됩니다.
서버인경우 크론을 직접 설정가능하고 웹호스팅인경우 호스팅사마다 다릅니다.
=> 특정시간에 특정행동을 반복할수 있습니다.
=> 알려주시건 해당 기능을 하는 화일을 하나 만들고 매일자정마다 실행하게 하면 됩니다.
구글에서 온라인 크론탭 으로 검색해보시면 무료로 지원하기도 합니다
날짜면 하루에 한번만 체크 하면 될테니 따로 테이블을 만드셔서 체크할때 날짜를 넣고 하루에 한번 실행 누군가 게시판에 접속했을때 실행하시면 될거 같습니다.
위에 말씀하신 서버제로님 말씀과 비슷한 개념이라고 보시면 될거 같습니다.
호스팅 서비스를 어디서 쓰시는지는 모르겠지만
카페24 같은경우 관리자에서 클릭만으로 설정이 가능해서 예전에 설정해준적이 있는거 같습니다.