답변 4개
예전에 어디에 작업한 내용입니다
서버 부하를 줄일 수 있는 코드입니다
-- 아이디별 카운트를 화일로 저장하여 보여줍니다(페이지마다 화일을 하나 만듭니다)
--10분마다 한번씩만 카운트하여 보여줍니다 -- id 마다 카운트하지않고 한꺼번에 한번만 카운트 합니다
-- 검색이나 분류선택 보기가 아닐때만 카운트 기록
list 스킨 상단에 복사해 넣으세요
$file = $board_skin_path.'/'.$bo_table,'_'.$page; $g5_server_time = G5_SERVER_TIME;
$deli='';
if( file_exists($file)){ $data= file($file); $mycnt =unserialize($data[0] ); }
if(!$sca && !$stx && $mycnt[chktime]< $g5_server_time - 600){ //600 <--- 10분 마다 카운트 기록
$idArr = array();
for($k=0; $k } if($idTmp[1]) $idArr = array_unique($idTmp); else $idArr = $idTmp;
$idStr ="'". implode("','", $idArr)."'"; $qq = sql_query("select mb_id, count(*) as cnt from $write_table where wr_is_comment='0' and mb_id IN($idStr) group by mb_id");
while($row=sql_fetch_array($qq)) $mycnt[$row[mb_id]] = $row['cnt'];
$mycnt['chktime'] = $g5_server_time;
$bo_tmp= serialize($mycnt);
$fp=fopen($file,'w'); fwrite($fp, $bo_tmp); fclose($fp); } for문 다음에 $mb_id= $list[$i][mb_id]; if( !isset($mycnt[$mb_id]) ){ $mycnt =sql_query("select count(*) as mb_id from $write_table where wr_is_comment='0' and mb_id='$mb_id'"); } echo $mycnt[$mb_id]; //출력할 위치에
답변에 대한 댓글 1개
댓글을 작성하려면 로그인이 필요합니다.
댓글을 작성하려면 로그인이 필요합니다.
일단 성능 생각안하고.
list.skin.php를 아래 처럼 수정 하면 될 듯 합니다.
1. 글자수 배열 추가
원본
</p><p>for ($i=0; $i<count($list); $i++) { </p><p>
수정
</p><p style="font-size: 14.6667px;">$write_count = array();</p><p style="font-size: 14.6667px;">for ($i=0; $i<count($list); $i++) { </p><p style="font-size: 14.6667px;">
</p><p><td class="td_name sv_use"><?php echo $list[$i]['name'] ?></td> </p><p>
수정
</p><p><td class="td_name sv_use"></p><p><span class="Apple-tab-span" style="white-space:pre"> </span><?php</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>echo $list[$i]['name'];</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>$mb_id = $list[$i]['mb_id'];</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>if($mb_id && $write_member[$mb_id]) echo "({$write_member[$mb_id]})";</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>else if($mb_id && $page <= 5) {</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>$sql = " select count(mb_id) as cnt from $write_table where mb_id = '{$mb_id}' and wr_is_comment = 0 ";</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>$row = sql_fetch($sql);</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>$write_member[$mb_id] = $row['cnt']);</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>echo "({$write_member[$mb_id]})";</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>}</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>?></p><p></td></p><p>
5페이지 까지만 계산.
동접자가 꽤 있다면 $write_member 내용을 캐쉬로 저장해서 불러오는 방법 등이 있겠습니다.
답변에 대한 댓글 2개
해볼게요~
아래 <?php echo $list[$i]['name'] ?> 를 대체하는 코드가 애러가 있는데 왜 그렇까요?
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
고맙습니다~