사람들이 바로 안달려서 그런지 꼭 2번 클릭을 하는지 같은댓글이

2개씩 달리는 경우가 상당히 많습니다.

  • profile
    기진곰님 애드온 쓰세요. 절대 설정된 시간에 같은 글 등록 안됩니다. 스팸방지 등 다양하게 사용 가능하지만 말씀 하신 기능에도 탁월하죠.
  • profile profile

    이거 이미 오래전에 깔아두었는데
    제 사이트에는 계속 2개 올라옵니다.

  • profile profile
    그럼 설정이 잘못되었거나 회원들이 설정된 시간동안 페이지 반응이 없어도 가만히 있다가 다시 눌러서 그렇습니다. 시간을 더 길게 세팅해 보세요. 저희는 3분 세팅햇습니다. 1,2분은 기다렸다가 다시 누르더라구요.
  • profile profile
    저는 한시간으로 되어있어요... ㅎㅎ
    이상하게 저는 재현을 하려고 해도안되는데 회원들은 어찌그리 2개씩다는지.. ㅠ
  • profile profile
    그럼 한 시간 뒤에 와서 누르는거에요. 등록한 분께 물어보세요.
  • profile profile

    등록한 시간이.. 한시간이 아닙니다. 같은 분이죠.
    누가 한시간을 기다렸다가 ㅎㅎㅎ
    제 사이트와 호환이나 기타등이 안되어서 다른 해결책을 찾고 있는 겁니다.

     

    생각해보니 익스 하위버전에서 해당문제 생기는지 봐야겠네요.

  • profile profile
    깃허브에 문의해보세요. 코드상 불가능할거 같은데 등록자체가...
  • profile profile

    ddddd.jpg

     

    제가 발견되는 족족 지워서 잘없는데

    하루에 2~3회정도 이런일이 발생하네요.

     

    코드상에 문제가 없지만 뭔가 서버나 프로그램상의 충돌이나 문제점이 발생하나봅니다.

  • profile profile
    저는 애드온 설정에서 실수 게시판을 누락한 경우는 있었는데요. 뭐 설정이나 다 이상없는데 이런 현상이라면 애드온이 고쳐야할 부분이 있는 거겠죠. 문의 해보세요.
  • profile
    https://xe1.xpressengine.com/index.php?mid=download&package_id=22753852
  • profile

    오래 기다리는 경우보다는 너무 빨리 (5초 안에) 등록버튼을 연타했을 때 저런 문제가 생긴다고 알고 있습니다. 첫번째 댓글이 등록 완료되기도 전에 두번째 댓글을 등록하려고 시도하니까, 애드온에서 같은 내용으로 이미 등록된 댓글이 있는지 찾아보려고 해도 안 나오는 거죠.

     

    댓글 등록시 알림 전송 등 처리해야 할 일이 많은 사이트일수록, PHP 기본 세션이 아닌 DB 세션이나 memcached 세션을 사용하는 사이트일수록, 그리고 InnoDB를 사용해서 트랜잭션 처리가 되는 사이트일수록 이런 문제가 심합니다. 트랜잭션이 완료되기 전에는 다른 요청에서 현재 등록중인 댓글을 볼 수 없거든요.

  • profile profile
    아예 얼럿창으로 댓글이 등록중이므로 잠시만 기다려주세요 라고나오거나
    댓글로 첨부를 하는경우는 잘 없으니 댓글 2번클릭 시 페이지가 새로고침 되면 조금 나을 지도 모르겠네요.
  • profile profile
    등록버튼 클릭시 버튼을 disabled 시켜버린 후 setTimeout으로 10초 후에 풀어주는 방법도 있습니다. 댓글 등록 도중 오류가 발생하면 다시 등록해야 하는 경우도 있으니까요.
  • profile profile

    그럼 저희 처름 한번 클릭 후 10초 정도는 클릭이 안먹게 해 두면 애드온으로 완벽 하겠네요. 밑에 댓글 보고 또 제가 달고 생각해보니 저희 사이트에서는 한번 클릭 후 10초 여유가 있어 절대 등록이 안되는 것 같습니다.

     

    그런데 한번 클릭 후 다시 클릭 안되도록 처리 안한 스킨에서도 빠르게 등록하려고 해도 등록이 안되는거 보면 서버의 처리시간 차이도 영향이 있을 듯 합니다.

  • profile profile
    mysql 이라 inodb와는 상관이 없어보이고 알림센터 빈도같은걸 조정 가능한지 확인 해봐야겠네요.
    감사합니다.
    바쁘시겠지만 문제될만한 요소가 있는지.. 살펴봐 주실수 있으실까요? 주소는 쪽지로 드릴 수 있습니다.
  • profile profile
    그런데 일반적인 방법으로 테스트 해봐도 두번 등록이 안되는데 어떤 상황에서 등록이 되는걸까요 ㅋ
    저는 이중 등록해보려고 노력해봐도 애드온에서 막히네요. 10초 동안 버튼 먹통 만들지 않은 스킨으로 테스트해도 절대 이중 등록이 안되요 ㅋ
  • profile profile
    제말이요 ㅎㅎ 아니 일반 회원들이 안좋은 컴퓨터를 쓰는건지 저는 수십번을 해봐도 안되는데.
    일부러 오래된 글 찾아가면 느리게 뜰까봐 그렇게도 해봤는데 재현이 안됩니다. ㅎㅎ 미칠 노릇이네요.

    같은 댓글 3개씩 달리면 괜히 서버자원 아깝다 느껴지더라구요~
  • profile profile

    아.. 다시 생각해보니.. 코어에서 3초정도는 블럭을 해버리니.. 3초 이상에서 중복 클릭하면 이전 글 등록이전일 수도 있어 이중 등록 될 듯 합니다.

    저희 처럼 10초 버튼 무력화 이게 답이네요. 저희가 테스트 하는 방법은 3초 이내에 클릭이라 코어에서 막혀요.

     

     

    서버가 조금 느리면서 && 유저가 3,4초 사이 중복 클릭하면 가능성이 많이 잇네요.

     -> 10초 무력화로 시간 더 늘리면 되겠습니다.

  • profile profile
    10초간 등록버튼 마비시키는 것이 가장 확실합니다.
  • profile profile
    그러네요. 저도 지금 왜 우리 테스트에서 중복등록이 안되었는지 이제 깨달았습니다.
  • profile profile
    공개된 해당 애드온이 있을까요? ~
  • profile profile
    공개된 스크립트가 있습니다. 구글링이나 여기 혹은 XE공홈 검색해 보세요. ㅋㅋ 저도 적용한거 찾아보고 알려드릴테니.. 여기 회원 하늘희님 스크립트 입니다.
  • profile
    <input type="submit" value="{$lang->cmd_submit}" class="bd_btn fr sone-btn" onclick="return beCheckWrite(this)" />


    등록버튼을 스크립트에 맞춰서 조금 변형하구요. 아래 스크립트는 댓글 등록폼 하단에 넣어주시면 됩니다.
    이게 댓글이니 글 등록도 비슷하게 하시면 됩니다.



    <script>

    function beCheckWrite(obj){

    var delaytime = 10000, // 몇초 후 재활성화 해줄 건지 설정 1000 = 1초
    submingText = '등록중..', // 클릭했을 때 보여줄 멘트..
    ori_text = jQuery(obj).val(),
    checkInput = false;

    //button 인지 submit인지 체크..
    if(!ori_text){
    checkInput = false;
    ori_text = jQuery(obj).text();
    }else{
    checkInput = true;
    }

    //현재 버튼 이름이 submingText와 동일한 경우 전송중으로 판단 전송하지 않음.
    if(ori_text == submingText) return false;

    //우선 비활성화를 한다.
    //obj.disabled=true;

    //기존 멘트를 바꿔준다.
    if(!checkInput){
    jQuery(obj).text(submingText);
    }else{
    jQuery(obj).val(submingText);
    }

    // 설정한 시간이 지나면 다시 활성화
    setTimeout(function(){

    if(checkInput) jQuery(obj).val(ori_text);
    else jQuery(obj).text(ori_text);

    },delaytime);

    return true;

    }

    </script>
  • profile profile
    등록중 입니다로 바뀌네요~ ㅎㅎ 잘적용 했습니다. 감사합니다.
  • profile profile
    저희는 메모게시판 지금 바꾸고 있는데 button 타입은 문제가 있어서 input으로 바꾸고 있습니다. input으로 하셨죠 ?
  • profile profile

    그리고 스케치북 스킨 쓰시면 댓글쓰기 대댓글쓰기 댓글수정 모두 하셔야 할겁니다.

  • profile profile
    넵 원래 기존 코드가 input 으로 작성 되어 있네요 ~
  • profile profile
    저희는 덕분에 메모게시판 스킨 교체한 이후 적용 안하다가 방금 마무리 했습니다 ㅋ
  • profile profile
    뭐든 생각난김에 작업하는게 좋죠 ~ 고생하셨습니다.
  • profile profile
    이 팁 너무 감사합니다~ 잘 적용했습니다.