sql 문으로 10만개의 글 중에 날짜를 통해서 이번달,이번주 등 랜덤글 보기 리소스.. 채택완료
안녕하세요..
커뮤니티 운영중에 다른 커뮤니티에는 '랜덤글'이라는 것이 탐이나서..
랜덤글을 그누보드로 만들어 보았는데...문제는 게시글이 10만개 정도 되거든요..
그 글을 다 랜덤 하려니..과부하가 걸릴것 같아서....
한달, 혹은 한주 이렇게 줄여서 글을 랜덤하게 버튼을 누르면 보여지게 하려고 하는데...
결론은 서버에 무리가 갈까요 ? 아니면 크게 무리 없으니 그냥 해도 될까요 ?
한달이 무리가 간다면...한주로 바꿔서 하려고 하는데..
무리가 간다면 접어야죠....
고수님들의 의견 듣고 싶네요..
답변 3개
전체글을 랜덤하는것 보다는 일정 조건(조회수, 추천수 많은순 등)을 주고 가져와서 1천개정도(?)를 일정 시간(5분)마다 갱신되게 파일 캐시를 해서 해당시간 동안에는 1천개중에서 랜덤으로 뿌려주면 부화가 줄어 들것 같습니다
답변에 대한 댓글 1개
댓글을 작성하려면 로그인이 필요합니다.
SELECT * FROM 테이블명 WHERE wr_datetime BETWEEN '2020-08-03' AND '2020-09-03' ORDER BY RAND() LIMIT 10
이런식으로 사용하시는건요??
댓글을 작성하려면 로그인이 필요합니다.
랜덤 글 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개
sql 문에서 limit 10; 으로 10개만 추출하면..
기본 order by가 wr_id 일테니.. 초창기 wr_id 위주로 나오는 것 같습니다.
13 ~ 14개의 숫자를 뽑는 것으로 변경해볼 수 있을 것 같습니다..
for ($i = 0; $i < 14; $i++) {
빈 테이블도 링크에 포함이 됩니다. 예를 들어 wr_id 필드 안에 있는 소스만 불러와야 하는데...
&wr_id=1234 <- 이렇게 나와야 하는데...
&wr_id= <- 이렇게 비어있는 필드도 나오네요..
제 짧은 지식으로는 무작위로 대입해서..없는 필드에 값이 없는 숫자가 나올 경우 저렇게 비는거 같은데...어렵네요...ㅠㅠ
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인