CI 묻고 답하기

제목 조회수를 카운터하는 update에서의 문제
글쓴이 리퍼스 작성시각 2015/12/21 12:21:12
댓글 : 2 추천 : 0 스크랩 : 0 조회수 : 15119   RSS

안녕하세요.

상식적인 질문일수도 있는데, 혹시 경험해보신분 조언좀 부탁드립니다.

제목과 같이 컨테츠를 열때 count라는 필드에 +1을 하고자 합니다. 그런데 정말 이해할수 없는 벽에 부딪혔는데요.

 

controller에서 다음과 같이 model을 호출합니다.

 

function detail() {

 

   $this->nboard_job_m->update_count_content($bidx);

....

}

 

$bidx에 해당하는 레코드를 업데이트 할꺼죠.

 

그럼 모델에서는 다음과 같이 합니다.

    function update_count_content($bidx) {       

       $this->db->where('bidx', $bidx);       

       $this->db->set('count', 'count + 1', false);

       $this->db->update('nboard_job');

   }

 

위 모델을 실행하고 데이터값을 가져다가 변경된 count값과 함께 화면에 뿌려지는데요.. 여기까지는 문제가 없습니다.

다시 목록이라는 버튼을 눌러 목록에 관련된 controller의 메소드를 호출하여 데이터를 수집후 목록을 화면에 뿌려주는데 여기서 또 count가 +1이됩니다. 위에서 detail() 메서드를 호출하는게 아니고 전혀 다른 메소드를 호출하는데 update_count_content()를 한번 더 호출한 결과가 나오는거죠.

그래서 무슨이유에서든 2번이 호출되나하고 위 update_count_content()밑에 print_r('dd')를 찍어봤죠.

 

function detail() {

 

   $this->nboard_job_m->update_count_content($bidx);

   print_r('dd');

....

}

 

그랬더니 화면에 dd가 한번 찍히고 이번엔 +1이 한번만 적용되는거에요.. 참 신기합니다. 두번찍히나하고 코드를 넣었다니 이번엔 한번찍히네요.. 다시 print_r 구문을 빼고 실행하니 역시나 두번 +1을 합니다. 와~ 살살 열받기시작하는데 계속 크롬에서만 하다가 혹시나해서 익스플로러 11에서 열어봤더니 여기서는 +1이 한번만 실행되는 정상적인 결과가 나옵니다. 그럼 크롬만 그렇다는 결과가 나오는데 예전에 뷰를 뿌려줄때도 크롬에서는 비슷한 반복이 있었는데, 익스플로러에서는 정상적인 결과가 나오는경우가 있었습니다. 그때와 비슷한것 같은데...

혹시 이런 경험해보신분 이거 왜 이런 결과가 나오는지 조언좀 부탁드립니다.

 다음글 바로밑에 조회수 카운트 의문점 다시 문의 드려요. (2)
 이전글 변수 선언 안할시 생기는 오류 Undefined ind... (1)

댓글

kaido / 2015/12/21 12:32:57 / 추천 0

동일 하진 않겠지만.. 비슷한 경험이 있습니다.

 

저의 경우엔 스크립트의 문제였습니다.

 

통계 혹은 트래킹 스크립트가 원인이 되었습니다.

외부에서의 콜 때문에 페이지를 2번씩 카운트 하는 현상이 나오더군요.

 

브라우저별로 되었다 안되었다 하면 스크립트쪽이 아닐지 의심이 드네요.

IE에서 안먹는 스크립트가 크롬에서는 자동 디버깅 기능으로 실행 되는 경우도 있습니다.

 

리퍼스 / 2015/12/21 13:20:50 / 추천 0

kaido 님 답변감사합니다.

찾다찾다 못찾아서 크롬 개발자 도구의 네트워크를 살펴보는데 이상한부분이 발견됐습니다. 제가 코드이그나이터의 설정 혹은 코딩방법에 문제가 있는것 같은데, 위 중간에 print_r를 넣었을때와 뺏을때 전 페이지가 모두 상이한 결과가 나왔습니다. 먼저 뺏을때 다음과 같이 로딩 절차를 밟습니다.

마지막에 한번더 detail 페이지를 로딩하네요... 이상합니다. 이후 print_f문을 넣어 다시 새로고침을 합니다. 그럼 다음과 같습니다.

정상적으로 한번만 로딩되었네요... 이게 홈화면일때도 그렇고 마지막에 페이지를 재호출하네요..

어째서 이런현상이 나오는걸까요? 혹시 코드이그나이터에 이와 관련된 설정이 존재하나요? 위에서 type란에 document와 text/html 이 다르던데 무슨 차이가 있는건가요?