전체게시판 조회수 가장 높은순 탑5
본문
게시판이 3개가 있는데, 이 중 조회수 가장 높은순으로 5개 글을 가져오려고 합니다.
검색해보니 거의 최신글 스킨을 쓰시는 것 같은데 최신글은 최근 30일 작성된 게시물중에서 가져오는거죠?
전체 게시물중에서 가져오는 방법은 없을까 질문드립니다,,
답변 5
1. 테이블을 하나 만든다 // 테이블명 rank . 필드:: bo_table, wr_id, wr_hit, wr_subject
2. 각 테이블에서 5개 추출하여 rank테이블에 저장한다
( select 'bo_tableA', wr_id, wr_hit, wr_subject from A order by wr_hit desc limit 0,5)
union
( select 'bo_tableB', wr_id, wr_hit, wr_subject from B order by wr_hit desc limit 0,5)
union
( select 'bo_tableC', wr_id, wr_hit, wr_subject from C order by wr_hit desc limit 0,5)
3. 페이지를 열때마다 실행하면 서버부하에 좋지않으므로 하루에 한번 또는 오전 한번 , 오후 한번
저장되도록 한다
4. rank테이블에서 5개추출 한다
select * from rank order by wr_hit desc limit 0, 5
5. 다시 저장할때는 truncate table rank 하여 테이블을 비우고 저장한다
게시판 유형이 비슷하고 게시판을 1개의 게시판으로 운영하고 카테고리를 3개로 나눠서 활용하는 방법이 있습니다.
board.php?bo_table=게시판&sca=카테고리1
board.php?bo_table=게시판&sca=카테고리2
board.php?bo_table=게시판&sca=카테고리3
그리고 최근글은 이 게시판에서 조회수 가장 높은걸 뽑아내는 방식입니다.
최근 게시물 뽑아오는 함수는 /lib/latest.lib.php 에 있는데
여기있는 함수를 활용하시면 됩니다.
조회수 변동할 때마다
top 5를 만드는 방식이나
매 시간마다 top 5 뽑는 query를 한 번씩 돌리거나
이런 방식이 효율적일 듯합니다.