게시판 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 파일에서 하는게 맞나요?? 지금 당장이야 테스트 게시글로 하는거라 상관없다지만
게시글이 많아질 경우에 리스트 페이지를 진짜 오랜만에 접속하는 경우 다량의 업데이트가 발생할텐데
이런 경우 생길 이슈...등등을 고려했을때 어느 페이지에서 업데이트 쳐주는 작업을 하시나요??ㅠㅠㅠ
</p>
<p><?php for ($i=0; $i<count($list); $i++) {</p>
<p> $classes = array();</p>
<p> $classes[] = 'gall_li';
$classes[] = 'col-gn-'.$bo_gallery_cols;</p>
<p> if( $i && ($i % $bo_gallery_cols == 0) ){
$classes[] = 'box_clear';
}</p>
<p> if( $wr_id && $wr_id == $list[$i]['wr_id'] ){
$classes[] = 'gall_now';
}</p>
<p> $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);
}
?></p>
<p>
답변 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);
}
답변에 대한 댓글 3개
1일 1회 1 SQL 로 한번에 모두 update 하는 방식을 추천하겠습니다.
for 문 안에서 sql 실행은 빼고, 상단으로 올리면 됩니다.
실행날짜 기록 조건을 주면.. 1일 1회만 실행시킬 수 있습니다.
if ($config['cf_10'] != date('Y-m-d')) {
// (업데이트문)
$sql = "
update {$write_table}
set ca_name = '종료'
where ca_name = '진행중'
and wr_10 < {$today}
";
sql_query($sql);
// 실행날짜 정보 기록
$sql = "update {$g5['config_table']} set cf_10 = '" . G5_TIME_YMD . "' ";
sql_query($sql);
}
댓글을 작성하려면 로그인이 필요합니다.
호스팅 서비스를 어디서 쓰시는지는 모르겠지만
https://blog.cafe24.com/733">https://blog.cafe24.com/733
카페24 같은경우 관리자에서 클릭만으로 설정이 가능해서 예전에 설정해준적이 있는거 같습니다.
댓글을 작성하려면 로그인이 필요합니다.
날짜면 하루에 한번만 체크 하면 될테니 따로 테이블을 만드셔서 체크할때 날짜를 넣고 하루에 한번 실행 누군가 게시판에 접속했을때 실행하시면 될거 같습니다.
위에 말씀하신 서버제로님 말씀과 비슷한 개념이라고 보시면 될거 같습니다.
답변에 대한 댓글 1개
댓글을 작성하려면 로그인이 필요합니다.
크론으로 설정하시면 됩니다.
서버인경우 크론을 직접 설정가능하고 웹호스팅인경우 호스팅사마다 다릅니다.
https://jdm.kr/blog/2">https://jdm.kr/blog/2
=> 특정시간에 특정행동을 반복할수 있습니다.
=> 알려주시건 해당 기능을 하는 화일을 하나 만들고 매일자정마다 실행하게 하면 됩니다.
구글에서 온라인 크론탭 으로 검색해보시면 무료로 지원하기도 합니다
답변에 대한 댓글 1개
그래서 페이지 접속시 실행하는 방법을 생각했던거였거든요ㅠㅠㅠ
아니면 extend 에 업데이트 칠 소스를 구현해서 돌리면 페이지 불문... 어느 페이지를 접속하던 접속시 최초 1회는 무조건 계속 돌겠죠...?? 흠...ㅠㅠ 고민이네요;;ㅠ
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
각 게시글의 종료날짜를 체크해서 게시글 분류를 '진행중' 에서 '종료'로 업데이트 칠때 config 의 여분필드에도 오늘 날짜로 업데이트 시키고 config의 여분필드의 날짜와 오늘 날짜가 다를 경우 실행시키면 한번만 적용된다는걸 설명해주시려는게 맞나요??ㅠㅠ