CI 묻고 답하기

제목 CI에서 session문제
글쓴이 달수 작성시각 2012/12/03 00:34:13
댓글 : 5 추천 : 0 스크랩 : 0 조회수 : 16274   RSS
제가 요번에 사이트 작업을 하면서 CI를 적용해서 작업을 해봤는데
CI가 세션쪽에 좀 문제가 있는거 같은데 다른분들은 이상이 없나요 ^^?

세션쪽에 문제가 잘 작동하다가 갑자기 세션이 사라지는 문제가 발생하네요
사라진다기보다는 세션이 새로생성이 되는거 같더라구요 세션을 디비로 저장하는데
로그인시 기록된 세션데이타를 못읽고 새로 세션이 생성되어서 로그인 유지가 안되는거 같네요

이게 전부다 발생하는게 아니고 특정유저에게서 가끔 발생한다는게 문제인거 같네요 ;
config설정상문제라면 전체적으로 문제가 생겨야 되는데 아무문제 없다가 한두사람한테
이런문제가 발생하네요 특히 익스플로러 브라우저버전이 낮으면 더 자주 발생하는거 같더라구요

그래서 구글을 찾아보니까 외국에서도 세션문제가 많이 나온느거 같은데 다른분들은 아닌가요?

그래서 일단은 구글을 찾아보니까 현재 CI 섹션을 기존에 사용하는 방식 그대로 사용하면서 php native 세션을 사용하는
라이브러리를 구해서 그걸로 일단은 교체를 해놓은상태인데 교체후 세션문제는 없습니다. 이게 좋은점이 소스
수정없이 라이브러리 폴더에 가져다놓으면 끝이더군요. 

질문은 CI세션쪽에 현재 버그가 있는건가요? 아님 제가 뭘 잘못해서 그런가요 ;;
저의 config설정입니다. 아 저의 버전은 2.1.3 입니다.

$config['sess_cookie_name']  = 'acesession';
$config['sess_expiration']  = 0;
$config['sess_expire_on_close'] = TRUE;
$config['sess_encrypt_cookie'] = TRUE;
$config['sess_use_database'] = TRUE;
$config['sess_table_name']  = 'acesession';
$config['sess_match_ip']  = FALSE;
$config['sess_match_useragent'] = FALSE;
$config['sess_time_to_update'] = 300

$config['cookie_prefix'] = "";
$config['cookie_domain'] = ".domain.com";    //여기 도메인은  그냥  .domain.com으로 해놓은 겁니다. ^^;
$config['cookie_path']  = "/";
$config['cookie_secure'] = FALSE;

아 그리고 추가질문이 있는데 제가 현재 모든 콘트롤러의 디비처리를 한클래스에서 하고 있는데 퍼포먼스측면에서는
어떤방식이 좋은지 잘모르겠네요 각  콘트롤러마다 만들어야 하는지
 다음글 view 페이지 include 부분 (12)
 이전글 뷰에서 콘트롤러 호출시 매개변수(argument) 2개... (2)

댓글

변종원(웅파) / 2012/12/03 08:55:58 / 추천 0
저도 전에 비슷한 증상이 있었습니다. 2.0.3버전이었던 것 같은데 2.1에서는
아직 그런 증상이 나오지 않았습니다.

디비처리라는게 모델을 말씀하시는거죠? 모델은 컨트롤러마다 따로 만드셔야 합니다.
달수 / 2012/12/04 00:55:04 / 추천 0

네 디비는 모델을 말하는거구요 &&;
지금은  모든콘트롤러의  모델을 한곳에서 처리하거든요 ;; 즉 모델클래스가 1개라는거지요 ;
아 콘트롤러마다 따로 만들어야 되는건가보네요 이유는 뭔가요?
퍼포먼스측면때문에 그런건가요? 모든 콘트롤러마다 모델을 다시 만들어야한다면
그것도 작업이 많이  들어가겠네요 ㅜㅜ;;

그리고 세션사라지는 문제는 현재 xp 익스플로러 6에서 가끔씩나왔던거 같네요
그리고 스마트폰에서도 한두번정도 나왔던거 같구요 현재는 php 자체세션으로 바꾸어서
이상은 없습니다. 걍 세션은 이렇게 사용해야될거 같네요 아무래도 당분간은 ;;
 

변종원(웅파) / 2012/12/04 09:59:46 / 추천 0

mvc패턴에 대해 한번 찾아보시고 이론을 보시는 것이 좋습니다.

하나에 때려넣으면 퍼포먼스도 문제가 됩니다.

뷰는 왜 따로 만들까요? 하나의 뷰에서 if문 처리해도 될덴데요? ^^

컨트롤러도 하나만 만들어서 내부에서 switch문으로 분개해도 될건데요?

왜 그렇게 안하는지 생각해보면 답이 나오겠죠.

달수 / 2012/12/04 13:36:06 / 추천 0
넵 답변감사합니다. ^^
천천히 분리작업을 해야겠네요 컨트롤러만 한 40개가 되서요 ㅡㅡ;
한대승(불의회상) / 2012/12/04 13:51:57 / 추천 0
달수// 컨트롤러가 40개라고 모델도 40개 여야 하는건 아닙니다.
한개의 컨트롤러가 복수의 모델을 로드 할 수도 있고  모델에서 모델을 로드 할 수도 있습니다.

중복되는 코드는 최대한 줄이고 유지 보수가 최대한 편하게 하는게 좋겠죠. ^^