이건 안가능하겟죠? 리스트

이건 안가능하겟죠? 리스트

QA

이건 안가능하겟죠? 리스트

본문

게시판에 글이 많이 있습니다.

 

리스트에..조회수처럼 해당 아이디가 해당게시판에 쓴글이 몇개라는거 표시되게요,,,,,

 

방법이 있다면 어떻게 해야 할지요?

 

부하가 많이 걸리겟죠? 

 

1-5페이지만 그렇게 나타내고,,아니면 1주일 이내 작성글에 대해서만 나타내도 될거 같구요,,

대신 해당 게시판 전체글중에 자신의 글이 몇개인지 나타나게 하려구요,,

 

이 질문에 댓글 쓰기 :

답변 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<count($list); $k++){
    if(!$list[$k][mb_id]) continue;
    $idTmp[] =$list[$k][mb_id];

}

 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]; //출력할 위치에

 

일단 성능 생각안하고.

 

list.skin.php를 아래 처럼 수정 하면 될 듯 합니다.

 

1. 글자수 배열 추가

 

원본


for ($i=0; $i<count($list); $i++) { 

 

수정


$write_count = array();
for ($i=0; $i<count($list); $i++) { 

원본

<td class="td_name sv_use"><?php echo $list[$i]['name'] ?></td> 

 

수정


<td class="td_name sv_use">
	<?php
		echo $list[$i]['name'];
		$mb_id = $list[$i]['mb_id'];
		if($mb_id && $write_member[$mb_id]) echo "({$write_member[$mb_id]})";
		else if($mb_id && $page <= 5) {
			$sql = " select count(mb_id) as cnt from $write_table where mb_id = '{$mb_id}' and wr_is_comment = 0 ";
			$row = sql_fetch($sql);
			$write_member[$mb_id] = $row['cnt']);
			echo "({$write_member[$mb_id]})";
		}
	?>
</td>

 

5페이지 까지만 계산.

동접자가 꽤 있다면 $write_member 내용을 캐쉬로 저장해서 불러오는 방법 등이 있겠습니다.

 

답변을 작성하시기 전에 로그인 해주세요.
전체 125,888 | RSS
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT