테스트 사이트 - 개발 중인 베타 버전입니다

이건 안가능하겟죠? 리스트 채택완료

너모야민쯩까 9년 전 조회 3,869

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

 

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

 

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

 

부하가 많이 걸리겟죠? 

 

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

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

 

댓글을 작성하려면 로그인이 필요합니다.

답변 4개

채택된 답변
+20 포인트
9년 전

예전에 어디에 작업한 내용입니다

서버 부하를 줄일 수 있는 코드입니다

-- 아이디별 카운트를 화일로 저장하여 보여줍니다(페이지마다 화일을 하나 만듭니다)

--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개

너모야민쯩까
9년 전
감사합니다~
고맙습니다~

댓글을 작성하려면 로그인이 필요합니다.

데이터 얼마없으면 부하신경안쓰셔도되는데 

 

나중까지 생각하시면다면 

 

db 에 컬럼하나추가해서 체크하면 좋을거같네요 

 

 

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

그림자밟기

일단 성능 생각안하고.

 

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개

너모야민쯩까
9년 전
아흐..방법이 잇긴 있근요,,,감사합니다~
해볼게요~
너모야민쯩까
9년 전
위에 for는 이상없는데..
아래 <?php echo $list[$i]['name'] ?> 를 대체하는 코드가 애러가 있는데 왜 그렇까요?

댓글을 작성하려면 로그인이 필요합니다.

P
9년 전

기존보다 살짝 부하는 줄 수있겠지만 그렇게 큰 부하는 아닐거라고 보여지네요.

리스트 스킨을 살짝 수정해서 가능합니다

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인