질문/조언질답게시판
Extra Form
PHP PHP 7.4
CMS Rhymix 2.x

지난 달에도 경험치 메달 지급이 잘 안되어서 수동으로 지급해줬는데 이 문제가 해결 된줄 알았는데

이달 메달지급도 되지 않았네요. 일단 현상을 남기려고 현재 수동 지급은 하지 않았습니다.

경험치 계산도 잘 되는것 같은데 실제 메달 지급이 되지 않고 있는것 같습니다.

저희는 람보님 메달 아이콘과 메달 이름만 수정해서 쓰고 있습니다. 

 

스크린샷 2021-05-01 10.43.03.png

 

스크린샷 2021-05-01 10.19.27.png

 

스크린샷 2021-05-01 10.45.25.png

 

스크린샷 2021-05-01 10.59.03.png

 

혹시 몰라서 데이터세그먼트도 같이 올려 봅니다. 

 

SELECT [ALL | DISTINCT | DISTINCTROW ] [HIGH_PRIORITY] [STRAIGHT_JOIN] [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT] [SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS] select_expr [, select_expr] ... [into_option] [FROM table_references [PARTITION partition_list]] [WHERE where_condition] [GROUP BY {col_name | expr | position}, ... [WITH ROLLUP]] [HAVING where_condition] [WINDOW window_name AS (window_spec) [, window_name AS (window_spec)] ...] [ORDER BY {col_name | expr | position} [ASC | DESC], ... [WITH ROLLUP]] [LIMIT {[offset,] row_count | row_count OFFSET offset}] [into_option] [FOR {UPDATE | SHARE} [OF tbl_name [, tbl_name] ...] [NOWAIT | SKIP LOCKED] | LOCK IN SHARE MODE] [into_option] into_option: { INTO OUTFILE 'file_name' [CHARACTER SET charset_name] export_options | INTO DUMPFILE 'file_name' | INTO var_name [, var_name] ... }

 

 

 

자료를 찾아보니 클론텝 이야기가 나오던데 혹시 경험치 메달 클론탭에서 세팅해주는 건지 궁금합니다. 

  • profile

    개인적으로는 설명되어있는 php crontab.php 의 cron 실행으로는 작동되지 않았습니다.

    https://github.com/bjrambo/experience/blob/master/crontab.php#L10 이 상대경로를 인식하지 못해서 발생하는 문제로 추측이 되는데 제작자분께서는 해당문제에 관해서는 문제가 있다고 하시지 않아서 개인적인 경험으로 볼 수 밖에 없을 것 같습니다.

    지금 모듈에서 설명하는 방식으로 cron으로 실행해서 잘 되는 분이 계신지 확인이 필요해 보이네요.

     

    /usr/bin/curl -s "https://도메인/modules/experience/crontab.php" > /dev/null 2>&1

    이런 방식으로 되는지 한번 시도해 보세요. 서버에 따라 위 명령을 조금씩 다를 수 있습니다.

     

    파일을 실행하는 방식이 웹에서 실행하는 것과 동일해서 상대경로로 인식해서 되는 것 같습니다.

  • profile

    막줄에 크론탭에 실행되도록 설정을 안하고 지금 자동으로 되길 기다리신건가요???????????

    만약 그렇다면 제 윗 댓글은 무시해 주시고 크론탭에 모듈에서 안내하는대로 등록하고 결과를 보시기 바랍니다.

  • profile

    tlp / config.html 28번 삭제해서 동기화 버튼 생성하려고 지금 보니 크론탭에 관한 내용이 있었네요

    아마 크론탭에 넣지 않았던것 같은데 이번에 넣어서 저장해 보겠습니다.

    <h1>메달 초기화</h1>

    <div class="message error">

    <p>메달의 순위를 변경하거나 여러가지 요인으로 재 설정해야할 경우 이 버튼을 누르세요.</p>

    </div>

    <p><input class="x_btn x_btn-warning" type="button" value="메달 동기화 실행" onclick="syncMedal()" /></p>

    <p>crontab 으로 사용하실 사람은 아래와 같이 crontab -e 안에 넣어주세요.</p>

    <p>0 0 1 * * cd {$experience_dir}; php crontab.php > /dev/null 2>&1</p>

    </section>

     

    스크린샷 2021-05-01 11.26.34.png

  • profile profile

    {변수} 를 넣으시면 안됩니다. 모듈에서 직접 보이는 대로 경로를 넣으셔야 합니다. 코드에서 보는건 변수이고 그 변수가 모듈 관리자 페이지에서선 제대로된 경로로 보입니다. 관리자 페이지에서 저 부분 출력되게 하시고 나오는거 그대로 사용하세요.

    그리고 지금 처럼 넣으시면 다음달 1일 을 기다리셔야 작동 됩니다.

  • profile profile

    스크린샷 2021-05-01 11.34.30.png

    스크린샷 2021-05-01 11.35.00.png

     

    경로가 좀 이상한것 같기는 했습니다. 이렇게 수정 완료 했습니다.

    그리고 메달동기화 버튼 클릭해서 메달 지급 정상적으로 해줬습니다.

    다음달 예상 메달 랭킹은 아직 출력이 안되는데 아직 경험치를 받은 분이 없어서 그런것 같아서 

    좀 기다려봐야겠군요. 처음 경험치 메달 설치하면서 메달 동기화 버튼이 사라지는 바람에

    크론탭 내용을 잘 몰랐던것 같습니다. 감사 합니다. 

     

  • profile profile
    제 위젯의 다음달 예상랭킹이 출력되지 않는 건 이번달 활동으로 경험치 취득한 분이 아직 없어서 입니다. 문제가 아닙니다.

    크론탭이 안내한대로 될지는 미지수네요. 저는 안되서 위 댓글의 방식으로 바꾸어 해결했습니다.
  • profile profile
    네 테스트 해보고 다음달에 적용 안되면 웹지기님이 알려 주신대로 해볼게요. 이제 경험치 레벨업시 알림이 오지 않는 현상만 잡으면 될것 같습니다. 경험치 레벨로 등급 자동변경시 기존 그룹 삭제 안되고 중복 되는 문제는 개발자분이 더 이상 지원하지 않아서 당분간은 수동으로 처리해줘야 할것 같습니다 혹시 레벨 자동등업 부분에 관해 좋은 아이디어가 있으신가요? 경험치가 아니라 게시글 몇개 이런식의 활동 내역을 기준으로 하는 애드온을 써야할까요.
  • profile profile
    레벨 자동등업이 무슨 말씀이신지 모르겠습니다. 경험치와 레벨을 연동하고 계시다면 활동하면 경험치가 쌓이고 그러면 레벨이 올라갈텐데요...
  • profile profile

    스크린샷 2021-05-01 12.01.42.png

    이 옵션을 사용중인데 등급이 조정될때 기존 그룹이 삭제되고 새로운 그룹이 생성되어야 하는데 

    기존그룹이 삭제 되지 않아서 두 그룹이 동시에 존재하게 되는 이슈입니다.

    찾아보니 해결하신 분이 없으신 것 같더군요. 

  • profile profile

    아이디어라고 말씀하신 부분이 이건가요? 이문제는 버그일텐데요...

    포인트,경험치 레벨 연동 할 경우 이런 현상이 발생하는 사이트들이 있는 것 같은데 원인을 찾은 곳이 없는 걸로...

  • profile profile
    테스트 해봤는데 다음달 예상 메달 위젯 출력이 안되네요. 이쪽으로는 특별히 뭘 만진건 없는데 혹시 랭킹메달 초기화 버튼 출력 관련 코드 수정 하면서 삭제한 부분이 문제가 될수있을까요?
  • profile profile

    버튼 출력과는 상관 없습니다. 실제 db에서 5월 경험치 누적이 되고 있는지 확인해 보세요.

    사이트에 경험치 받을수 있는 일반회원 활동이 하나도 안보이는데요. 활동 회원은 있나요?

  • profile profile
    네 출석부 미션을 통해서 경험치 획득 보상 받은 회원을 확인했습니다. db를 봐야겠군요.
  • profile profile
    경험치 획득 확인을 했다??
    그런데 db를 봐야겠다??

    짧은 답변으로는 이해가 안가네요. 경험치 부여 확인은 db로 확인을 해야 할텐데요.
  • profile profile

     

    스크린샷 2021-05-02 12.23.52.png

    사실 DB는 봐도 잘 이해가 안가서 무슨 내용인지 해석을 못할때가 많아요.

    경험치가 확인 되었다는 내용은 경험치 보상을 주는 미션 모듈에서 보상 받은 부분이

    새로고침 해보면 경험치 출력되는 부분에 바로 반영이 되어서 경험치 지급이 잘 되고 있다는 정도만 확인한 것입니다.

     

  • profile profile

    지금 보신 테이블은 경험치 전체 누적이구요. 이건 관리자페이지에서 보이는 경험치 데이터입니다.

     

    월별 메달을 부여하기 위해서는 월데이터를 별도로 누적해야 합니다.

     

    화면 캡처 2021-05-02 123211.png

     

     

    experience_month 테이블을 접속하셔서

    regdate를 최신순으로 정렬해서 05월 데이터가 누적되고 있는 회원이 단 한분이라도 있는지 확인해보세요.

     

    없기 때문에 위젯에서 출력을 못하고 있겠죠?

     

    위와 같은 사실이 확인된다면 지금 의도하신대로 경험치가 부여되지 않고 있다는 것입니다.

     

    *출석으로 경험치 부여하는건 활동과 관계없어 비추 입니다. 이건 사족이구요.

  • profile profile

    스크린샷 2021-05-02 13.14.45.png

    데이터에서는 5월에 받은분이 있는것 같습니다.

    출석을 유도하려고 포인트 수치가 적어서 보너스로 경험치를 미션 형태로 제공 하고 있는데 이 부분도 고민해 봐야겠네요. 

  • profile profile

    출석을 보시면 의미가 없죠.
    출석을 통한 경험치가 부여가 되었는지를 보셔야죠.

    제가 위에 언급한 테이블을 보세요.

    experience_month 테이블

     

    *경험치를 미션으로 주고 있다고 하는 부분이 작동 안하는 것 같네요.

  • profile profile
    말씀하신대로 보니 04월까지만 기록이 되어 있네요. 경험치 메달 모듈을 재설치해봐야겠습니다.
  • profile profile

    아니에요. 미션모듈이 잘못하고 있거나 뭔가 오해하고 계신겁니다.

    재설치로 해결되는 사례는 거의 없으니 확인해보시길...

     

    경험치모듈에서 출석,로그인 포인트 에서 경험치 주는 것을 주석하였고

    이를 대신하기 위해 미션모듈에서 출석시 경험치를 주기로 세팅했다면 미션모듈을 의심해보시기 바랍니다.

  • profile profile
    경험치모듈에서 출석, 로그인 포인트를 경험치 주는것을 주석 한 부분은 맞습니다.
    그런데 미션 모듈에서 출석시 경험치를 보상으로 주는 것은 맞으나
    출석모듈에서 포인트 지급은 기본으로 하되 경험치를 추가로 주게 설정 했는데
    혹시 미션 모듈 자체의 문제인지 문의해 봐야겠네요.
  • profile profile

    미션모듈에서 경험치를 줄때 db에 그냥 밀어 넣는다면 지금 처럼 experience_month 에는 해당 기록이 누적되지 않을 수 있습니다.

    미션모듈 개발자분이 새로 생긴 experience_month 테이블의 용도를 모르신다면 말이죠. 이게 경험치모듈에서 활동메달을 지급하기 위해 새로 생긴 월간데이터 누적 테이블입니다.

    db에 넣을때 experience_month에도 함께 넣던지 아니면 경험치모듈에서 경험치가 지급되는 함수를 이용하던지 해야 합니다.

     

    5월 1일 01시 경험치 50포인트가 발생하면 

    experience,experience_month 에 해당 회원에게 50이 증가해야 합니다.

     

    db에 넣는 방식으로 했따면 experience_month 5월 시작하는 날은 데이터가 없기 때문에 해당 값을 새로 만드는 작업도 필요합니다.

  • profile profile
    일단 개발자 분에게 문의 넣었고 미션 모듈 콘트롤러 php파일 열어서 들여다 보는 척? 하고 있습니다. 전에 주석 처리 알려 주신 파일도 한번 찾아보겠습니다.
  • profile profile
    미션모듈 개발자입니다

    이 게시글에서 미션모듈 보상시 경험치를 줄때 방식에 문제가 있을 수 있다고 제기가 된거 같은데요, 혹시 맞다면 아래 코드를 사용하는게 맞는지 확인해주실 수 있나요?

    직접 DB에 넣지는 않고, 경험치 모듈의 컨트롤러를 불러와서 설정을 해주고 있습니다

    // 경험치 지급 부분 코드
    $oExpController = getController('experience');
    $oExpController->setExperience($member_srl, $reward_data->value, 'add');
    // $member_srl : 지급받는 멤버의 srl
    // $reward_data->value : 지급되는 경험치 값 (숫자)

    아마 위 코드를 사용하는게 맞는거 같은데 다른 부분은 패스하고 위와 같이 경험치를 지급하는게 올바르게 지급하는 방식이 맞나요?
  • profile profile

    개발자가 아니라 제가 답변드리기에는 부정확한 정보를 전달할 수 있을 것 같아 실마리가 되는 정보 정도 제공해 드리는 것으로 하겠습니다.

    경험치모듈에 기능이 추가된 메달시스템 경험치모듈에는
    경험치가 부여될때 월간 경험치누적에 별도로 입력해 줘야 합니다.

    이부분을 검토해 보세요.

    기존 경험치 모듈에서는 월간 활동을 따로 누적할 필요가 없어서 없던 기능이구요. 기능이 추가된 모듈에서 메달지급을 위한 순위를 산정하기 위해 월간 누적 데이터를 따로 입력해야 합니다.

    이때 5월 1일 처음 월간 데이터가 발생하면 insert 를 통해 해당 회원의 월간데이터를 새로 만들어야 하구요. 이후는 경험치가 발생할때 마다 update를 하면 됩니다.

    위 제가 첨부한 스크린샷에 experience_month 테이블 이 보이실 겁니다.

     

    월간 데이터는 경험치 모듈 내에서 넘어온 것을 넣어주는 상황이 아닌가 하는 생각이 드네요.

    https://github.com/bjrambo/experience/blob/0.1.1/experience.controller.php#L20

    위 함수 맨 아래에 월간 데이터를 넣어주게 되는거 같습니다.

  • profile profile
    https://github.com/bjrambo/experience/commit/aba837eb9a8b5bdf06ffd2ecec8c2743524464cf