제목 | CI2 세션에 대해 문의드립니다.. | ||
---|---|---|---|
카테고리 | CI 2, 3 | ||
글쓴이 | js | 작성시각 | 2025/06/24 08:25:35 |
|
|||
안녕하세요. php5.4, ci2 환경에서 운영하던 프로젝트를 php7.4, ci2 환경으로 이관하여 (서버도 이관) 운영할 준비 하고 있습니다.
여러 서비스가 있는데, 참 희안하게 특정 A프로젝트 에서만 세션문제가 자꾸 발생합니다. (로그인 후 조금있으면 로그인세션 풀림) PC, 모바일 모두 해당.
이런저런 테스트를 하다보니 PC는 좀 잡힌것 같은데 (이것마저도 한 10분 후에 다시 세션이 풀립니다.) 모바일은 툭하면 풀리고..; 대체 어느부분을 확인해야 할지 감이 안잡힙니다. ㅠㅠ
$config['sess_cookie_name'] = 'ci_session'; $config['sess_expiration'] = 7200; $config['sess_expire_on_close'] = TRUE; $config['sess_encrypt_cookie'] = FALSE; // 암호화 사용 권장 $config['sess_use_database'] = TRUE; $config['sess_table_name'] = 'ci_sessions'; $config['sess_match_ip'] = FALSE; $config['sess_match_useragent'] = FALSE; $config['sess_time_to_update'] = 300;
$config['cookie_prefix'] = ""; $config['cookie_domain'] = ".{domain}"; $config['cookie_path'] = "/"; $config['cookie_secure'] = FALSE;
로그인 직후 function make_session($attr=Array()) { $CI =& get_instance(); extract($attr);//넘어온 배열을 php 변수로 분리//리스트 데이터 추출 $session = array( 'm_user_idx' => $idx, 'm_user_id' => $user_id, 'm_user_email' => $user_email, 'm_user_name' => $user_name, 'm_pc_point' => $pc_point ); $CI->session->set_userdata($session); $CI->session->sess_update(); // DB에 확실히 저장 }
조언좀 구해봅니다.. |
|||
이전글 | CI Log 관련 질문드립니다. (1) | ||
darkninja
/
2025/06/25 21:41:08 /
추천
0
|
darkninja
/
2025/06/25 21:45:12 /
추천
0
챗지피티에게 질문 내용을 그대로 입력하고 물어보았습니다
안녕하세요! ✅ 주요 점검 항목1.
|
js
/
2025/06/26 08:04:45 /
추천
0
챗gpt로 수십번 문답해서 테스트 해봤는데 결국 100% 해결되지는 않았습니다... 관심 감사합니다. |
https://adot.ai/multillm
에이닷에게 질문 내용을 그대로 입력하고 물어보았습니다
안녕하세요.
php5.4, CodeIgniter 2 환경에서 php7.4, CodeIgniter 2 환경으로 이관 후 특정 프로젝트에서만 로그인 세션이 자꾸 풀리는 문제를 겪고 계신 상황에 대해 말씀해 주셨습니다. PC와 모바일 모두 동일하게 세션 유지에 문제가 있고, 특히 모바일에서 더욱 빈번히 세션이 만료되는 현상입니다.
세션 만료 문제는 PHP와 세션 설정, CodeIgniter 세션 라이브러리 설정, 서버 환경(특히 세션 저장 방식), 그리고 브라우저/클라이언트 환경 등 다양한 요인에서 기인할 수 있습니다. 다음과 같은 점들을 단계적으로 점검해보시길 권해드립니다.
1. 세션 설정 관련 점검
현재 설정은 아래와 같습니다.
php
$config['sess_expiration'] = 7200; // 2시간 $config['sess_expire_on_close'] = TRUE; // 브라우저 종료시 세션 만료
sess_expire_on_close
가 TRUE면 사용자가 브라우저를 닫으면 세션이 종료됩니다. 모바일 환경에서 브라우저가 백그라운드로 이동하거나 앱이 자주 종료되는 경우 세션이 풀릴 수 있습니다.따라서 모바일에서 세션 유지가 중요하다면
sess_expire_on_close
를 FALSE로 변경하는 것을 고려해보세요2.php
$config['cookie_domain'] = ".{domain}"; $config['cookie_path'] = "/"; $config['cookie_secure'] = FALSE;
cookie_domain
설정이 올바른지 꼭 확인하세요. 도메인이 틀리거나 하위 도메인 문제로 쿠키가 공유되지 않는 문제가 있을 수 있습니다.cookie_secure
가 FALSE이므로 HTTPS 여부와는 무관하지만, 가능하면 HTTPS에서 사용 시 TRUE로 설정하는 것이 권장됩니다2.서버의 시간이 정확한지 확인하세요. 서버 시계가 뒤틀려 있으면 세션 만료 타이밍이 맞지 않을 수 있습니다.
2. 세션 저장 방식 및 데이터베이스 확인
sess_use_database = TRUE
로 세션 데이터를 DB에 저장하는 경우, DB 테이블(ci_sessions
) 구조 및 세션 기록 갱신이 제대로 이루어지는지 확인해야 합니다.last_activity
필드가 주기적으로 업데이트되는지, 세션 레코드가 정상적으로 삭제되고 생성되는지 모니터링을 권장합니다.3. PHP 7.4와 CodeIgniter 2 호환성 문제
php.ini
의session.gc_maxlifetime
,session.save_path
등) 확인 및 조정4. 세션 갱신 관련 설정 확인
$config['sess_time_to_update']
가 300초(5분)로 설정되어 있어 5분마다 세션 아이디가 갱신됩니다.5. 기타 점검 사항
make_session
함수 등)에서 세션이 올바르게 생성, 갱신되고 있는지도 로그를 통해 꼼꼼히 점검해보셔야 합니다.요약
sess_expire_on_close
설정sess_time_to_update
)이 문제는 복합적인 환경 이슈가 많아 한 가지 원인으로 확정하기 어렵습니다. 위 조치들을 순차적으로 점검 및 테스트하시면서 문제 재현 원인과 패턴을 정밀 분석하시면 해결에 가까워지실 것입니다.
필요하다면 상세한 로그를 남겨 세션 생성, 갱신, 만료 시점을 기록하는 것도 큰 도움이 됩니다.
문제가 잘 해결되길 기원합니다. 추가 질문 있으시면 언제든 문의해 주세요.