도와주세요

출첵 모듈의 쿠키와 관련하여 질문 드려요 ^^

이니스프리2018.12.21 20:51조회 수 62댓글 4

    • 글자 크기

안녕하세요?


제가 저번에 소스 게시판에 올렸던 출첵 여부를 확인하는 위젯(아미나)의 PHP 스크립트를 짬짬이 수정하고 있는데요.


출첵자 수가 많은 경우에 반복해서 쿼리를 돌리는 것은 비효율적이라고 생각되어서


쿠키를 이용해서 서버의 부하를 줄여보려고 하는데요.


참고할만한 자료를 찾지 못해서 제 나름대로 두 가지 방법을 생각해봤거든요 ㅠㅠ

(두 가지 방법 모두 며칠 테스트해봤는데 다행히 정상적으로 작동하네요~!)


다음과 같은 두 가지 방식 중에서 어느 방법이 더 무난한 방법일까요?



방법 1: 


쿠키의 이름을 id(아미나에서 mb_id)로 하는 방법입니다(3, 4행).


<?php
    $write_table = "g5_write_{$wset['bo_list']}";
    $cookie_name = $member['mb_id'];
    if ($_COOKIE[$cookie_name] === 'OK') {
        echo "<a href = '".G5_BBS_URL."/board.php?bo_table=".$wset['bo_list']."' class='myButton'><i class='fa fa-calendar-check-o'></i>출석완료!!</a>";
    } else {
        $sql_attendance = " select mb_id from $write_table where mb_id = '{$member['mb_id']}' and wr_datetime >= '".G5_TIME_YMD." 00:00:00' and wr_datetime <= '".G5_TIME_YMD." 23:59:59' ";
        $result = sql_fetch($sql_attendance);
        if ($result['mb_id']) {
            echo "<a href = '".G5_BBS_URL."/board.php?bo_table=".$wset['bo_list']."' class='myButton'><i class='fa fa-calendar-check-o'></i>출석완료!</a>";
            setcookie($cookie_name, 'OK', strtotime('tomorrow'));
        } else {
            echo "<a href = '".G5_BBS_URL."/board.php?bo_table=".$wset['bo_list']."' class='myButton' id='no_attendance'><i class='fa fa-calendar-check-o'></i>출석하세요</a>";
        }
    }



방법 2:


쿠키의 이름은 고정하되 그 값에 id를 넣습니다(2행).


<?php
    if ($_COOKIE['attendance'] === $member['mb_id']) {
        echo "<a href = '".G5_BBS_URL."/board.php?bo_table=".$wset['bo_list']."' class='myButton'><i class='fa fa-calendar-check-o'></i>출석완료!!</a>";
    } else {
        $sql_attendance = " select mb_id from $write_table where mb_id = '{$member['mb_id']}' and wr_datetime >= '".G5_TIME_YMD." 00:00:00' and wr_datetime <= '".G5_TIME_YMD." 23:59:59' ";
        $result = sql_fetch($sql_attendance);
        if ($result['mb_id']) {
            echo "<a href = '".G5_BBS_URL."/board.php?bo_table=".$wset['bo_list']."' class='myButton'><i class='fa fa-calendar-check-o'></i>출석완료!</a>";
            setcookie('attendance', $member['mb_id'], strtotime('tomorrow'));
        } else {
            echo "<a href = '".G5_BBS_URL."/board.php?bo_table=".$wset['bo_list']."' class='myButton' id='no_attendance'><i class='fa fa-calendar-check-o'></i>출석하세요</a>";
        }
    }
?>




방법 1로 하면 공용 컴퓨터의 경우에 브라우저에서 생성되는 쿠키의 수가 늘어날 것이고,


방법 2로 하면 공용 컴퓨터에서도 쿠키는 1개만 생성이 되지만


대신 여러 명이 같은 컴퓨터에서 출첵을 하면 그 때마다 쿼리를 돌리고 쿠키도 갱신이 되겠죠.



아마도 큰 차이는 없겠지만 출첵자 수도 많고, 공용 컴퓨터에서 여러 명이 사용을 한다는 가정하에 어느 방법이 보다 효율적일까요?


그리고 이 방법에 제가 생각하지 못했던 문제점이 있거나, 제가 미처 발견하지 못한 보다 효율적인 방법이 있으면 조언을 부탁드립니다 ^^


혹시 쿠키의 이름이 아이디와 동일하게 생성이 되면 유저들이 싫어할까요??


그럼 열흘 남은 2018년 뜻깊게 보내시길 기원합니다!


답변 달아주실 분께 미리 감사드려요~ 

어떤 일에 임할 때 굉장히 중요하지만 우리가 종종 망각하는 것은

끝까지 포기하지 않고 최선을 다하는 것이 전부라는 사실입니다.

    • 글자 크기
humit 님의 parseweb 글 관련.... (by gimmepoint) CSRF 토큰 로그인 관련 질문 드립니다 (by 이니스프리)
  • 2018.12.22 21:52

    어차피 $member 데이터를 가져와야하므로, member테이블의 여분필드 (wr_1) 에 attenddate를 저장하는 것은 어떨까요?

  • @라엘
    이니스프리글쓴이
    2018.12.22 23:46

    앗 그런 좋은 방법이 있었군요!! 제가 미처 거기까지 생각하지 못했네요~! ^^

    일반적으로는 그런 방법으로 출첵 위젯을 만드는데 제가 너무 우회적인 방법을 택했나보군요 ㄷㄷ

    여분필드에 출첵 날짜가 계속 쌓일텐데, 그걸 이용해서 다른 기능을 구현할 수도 있겠네요.

    라엘 님께서도 연말이라 바쁘실텐데 답변해주셔서 정말 감사합니다 :)

    그럼 라엘 님께서도 남은 2018년 뜻깊게 잘 마무리하시길 기원합니다!

  • 2018.12.23 19:31

    아니면 방법 2를 사용하되 쿠키 값을 갱신하실 때 ";" + {새로 출석체크한 ID}와 같은 방식으로 해서 출석여부를 확인할 때는 split 함수로 배열로 바꾸는 방법이 있습니다.

  • @humit
    이니스프리글쓴이
    2018.12.23 21:16

    앗.. 그런 방법을 사용하면 방법 2의 단점이 해결되는군요 ^^

    번번이 정말 감사합니다!!

    이제 전역까지 7일 남으셔을텐데 부디 무탈히 전역하시고 가족분들과 함께 뜻깊은 연말연시를 보내시길 기원합니다 :)

댓글 달기

번호 제목 글쓴이 날짜 조회 수
공지 sfuh.tk 기본 도메인 사용하는 분들 확인바랍니다.6 마스터 2019.01.17 117
공지 2019년 새해 복 많이 받으세요!15 마스터 2019.01.01 407
공지 사이트 정보등록을 신경써서 해주시기 바랍니다.3 마스터 2018.12.31 492
공지 회원 전용 페이지가 생겼습니다.15 마스터 2018.03.20 3925
공지 [필독] 질문하는 방법5 마스터 2018.02.23 636
524 PHP잘하시는분 계신가요...?3 title: 만렙이 되어보자joyful 2019.01.17 46
523 XE에서 포인트 부족할시 알림창 띄우기3 title: 만렙이 되어보자도토리묵 2019.01.17 52
522 비번을 변경해야하는데 도와주세요 스포어 비번이요1 더딘 2019.01.16 27
521 giphy, gfycat 등 사이트가 일부 브라우저 또는 기기에서 문제가 있나요?4 이니스프리 2019.01.15 47
520 음 제 블로그가 증발한건가요...?21 협스 2019.01.13 148
519 미디어플렛폼 vs 커뮤니티55 title: 만렙이 되어보자joyful 2019.01.13 279
518 판단 대기 시간6 없음 2019.01.11 87
517 링크파싱 애드온에서 대표사진 파일 수집과 관련하여 질문 드립니다 ^^9 이니스프리 2019.01.10 88
516 비밀번호 값이 불러와지지 않습니다.2 Piedots 2019.01.05 44
515 사이트 정보 등록1 없음 2019.01.05 49
514 듀얼모니터 설정 질문드립니다3 calm 2019.01.03 40
513 그누보드5 최근게시물 추출 수정 관련 문의 핫슈 2019.01.01 32
512 호스팅 신청을 안하고 커뮤니티 활동을 해도 되나요?5 없음 2019.01.01 78
511 클라우드플레어랑 스포어 SSL이랑 같이 못 쓰나요?14 KOT49H 2018.12.29 146
510 데이터 센터 입주와 관련해서 질문 드려요 ^^9 이니스프리 2018.12.27 98
509 우분투 서버 최적화 작업의뢰는 언제 요청해야 되는 것인가요?15 이니스프리 2018.12.25 119
508 도메인 구매처에서 아무리 변경해봐도 안되던 이유가 혹시...4 Piedots 2018.12.22 61
507 humit 님의 parseweb 글 관련....3 title: 보물상자gimmepoint 2018.12.21 50
출첵 모듈의 쿠키와 관련하여 질문 드려요 ^^4 이니스프리 2018.12.21 62
505 CSRF 토큰 로그인 관련 질문 드립니다11 이니스프리 2018.12.20 103
이전 1 2 3 4 5 6 7 8 9 10... 27다음
첨부 (0)
서버에 요청 중입니다. 잠시만 기다려 주십시오...