제목 | 조회수를 카운터하는 update에서의 문제 | ||
---|---|---|---|
글쓴이 | 리퍼스 | 작성시각 | 2015/12/21 12:21:12 |
|
|||
안녕하세요. 상식적인 질문일수도 있는데, 혹시 경험해보신분 조언좀 부탁드립니다. 제목과 같이 컨테츠를 열때 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
|
리퍼스
/
2015/12/21 13:20:50 /
추천
0
kaido 님 답변감사합니다. 찾다찾다 못찾아서 크롬 개발자 도구의 네트워크를 살펴보는데 이상한부분이 발견됐습니다. 제가 코드이그나이터의 설정 혹은 코딩방법에 문제가 있는것 같은데, 위 중간에 print_r를 넣었을때와 뺏을때 전 페이지가 모두 상이한 결과가 나왔습니다. 먼저 뺏을때 다음과 같이 로딩 절차를 밟습니다. 마지막에 한번더 detail 페이지를 로딩하네요... 이상합니다. 이후 print_f문을 넣어 다시 새로고침을 합니다. 그럼 다음과 같습니다. 정상적으로 한번만 로딩되었네요... 이게 홈화면일때도 그렇고 마지막에 페이지를 재호출하네요.. 어째서 이런현상이 나오는걸까요? 혹시 코드이그나이터에 이와 관련된 설정이 존재하나요? 위에서 type란에 document와 text/html 이 다르던데 무슨 차이가 있는건가요? |
동일 하진 않겠지만.. 비슷한 경험이 있습니다.
저의 경우엔 스크립트의 문제였습니다.
통계 혹은 트래킹 스크립트가 원인이 되었습니다.
외부에서의 콜 때문에 페이지를 2번씩 카운트 하는 현상이 나오더군요.
브라우저별로 되었다 안되었다 하면 스크립트쪽이 아닐지 의심이 드네요.
IE에서 안먹는 스크립트가 크롬에서는 자동 디버깅 기능으로 실행 되는 경우도 있습니다.