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

sql 문으로 10만개의 글 중에 날짜를 통해서 이번달,이번주 등 랜덤글 보기 리소스.. 채택완료

와이쿠 5년 전 조회 1,785

안녕하세요..

커뮤니티 운영중에 다른 커뮤니티에는 '랜덤글'이라는 것이 탐이나서..

랜덤글을 그누보드로 만들어 보았는데...문제는 게시글이 10만개 정도 되거든요..

그 글을 다 랜덤 하려니..과부하가 걸릴것 같아서....

한달, 혹은 한주 이렇게 줄여서 글을 랜덤하게 버튼을 누르면 보여지게 하려고 하는데...

결론은 서버에 무리가 갈까요 ? 아니면 크게 무리 없으니 그냥 해도 될까요 ?

 

한달이 무리가 간다면...한주로 바꿔서 하려고 하는데..

무리가 간다면 접어야죠....

고수님들의 의견 듣고 싶네요..

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

답변 3개

채택된 답변
+20 포인트

전체글을 랜덤하는것 보다는 일정 조건(조회수, 추천수 많은순 등)을 주고 가져와서 1천개정도(?)를 일정 시간(5분)마다 갱신되게 파일 캐시를 해서 해당시간 동안에는 1천개중에서 랜덤으로 뿌려주면 부화가 줄어 들것 같습니다

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

답변에 대한 댓글 1개

와이쿠
5년 전
와 어렵네요...

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

SELECT * FROM 테이블명 WHERE wr_datetime BETWEEN '2020-08-03' AND '2020-09-03' ORDER BY RAND() LIMIT 10

 

이런식으로 사용하시는건요??

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

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

5년 전

랜덤 글 ID 를 PHP 에서 생성하는 방법을 생각해 볼 수도 있을 것 같습니다.

다만, 없는 글 번호를 감안.. 100개 정도의 랜덤 숫자를 추출한 뒤, 최종 표시는 10개 정도식으로 하면 되지 않을까 싶습니다.

 

for ($i = 0; $i < 100; $i++) {

  $arr_num[$i] = rand(1, 100000);

}

$txt = implode(',', $arr_num);

$sql = "select * from [table] where wr_id in ( {$txt} ) limit 10";

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

답변에 대한 댓글 3개

와이쿠
5년 전
혹시 게시글이 특이하게 일정 구간에서만 나오는데...전체 게시글 10만개 중에 10개를 wr_id를 추출하는게 맞나요 ? 희안하게 글이 계속 옛날꺼만 나와서요..
마르스컴퍼니
5년 전
100 개의 숫자를 뽑은 뒤,
sql 문에서 limit 10; 으로 10개만 추출하면..
기본 order by가 wr_id 일테니.. 초창기 wr_id 위주로 나오는 것 같습니다.

13 ~ 14개의 숫자를 뽑는 것으로 변경해볼 수 있을 것 같습니다..

for ($i = 0; $i < 14; $i++) {
와이쿠
5년 전
소스에 문제가 생겨 버렸습니다.
빈 테이블도 링크에 포함이 됩니다. 예를 들어 wr_id 필드 안에 있는 소스만 불러와야 하는데...

&wr_id=1234 <- 이렇게 나와야 하는데...
&wr_id= <- 이렇게 비어있는 필드도 나오네요..

제 짧은 지식으로는 무작위로 대입해서..없는 필드에 값이 없는 숫자가 나올 경우 저렇게 비는거 같은데...어렵네요...ㅠㅠ

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

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

로그인