2009-10-04 5 views
39

누군가 내 세션이 아래 데이터에서 지속되는 기간을 알려주실 수 있습니까? - 어느 것이 나에게 말해 줄지 모르겠 음내 세션은 얼마 동안 지속됩니까?

session.auto_start Off Off 
session.bug_compat_42 Off Off 
session.bug_compat_warn On On 
session.cache_expire 180 180 
session.cache_limiter nocache nocache 
session.cookie_domain no value no value 
session.cookie_httponly Off Off 
session.cookie_lifetime 0 0 
session.cookie_path//
session.cookie_secure Off Off 
session.entropy_file no value no value 
session.entropy_length 0 0 
session.gc_divisor 1000 1000 
session.gc_maxlifetime 1440 1440 
session.gc_probability 1 1 
session.hash_bits_per_character 5 5 
session.hash_function 0 0 
session.name PHPSESSID PHPSESSID 
session.referer_check no value no value 
session.save_handler files files 
session.save_path /var/lib/php/session /var/lib/php/session 
session.serialize_handler php php 
session.use_cookies On On 
session.use_only_cookies Off Off 
session.use_trans_sid 0 0 

답변

77

는 일반적으로 당신은 session.gc_maxlifetime이 세션 데이터의 마지막 변경 이후 최대 수명을 지정 말할 수있다 (하지session_start가 호출 된 마지막 시간!). 하지만 PHP의 세션 처리는 좀 더 복잡합니다.

에 의해 호출되는 가비지 수집기에서 세션 데이터가 제거되었으므로 session.gc_probability의 확률이 session.gc_divisor으로 나뉩니다. 기본값은 1과 100이므로 가비지 수집기는 모든 session_start 호출의 1 %에서만 시작됩니다. 즉, 세션이 이미 이론적으로 시간 초과 되었더라도 (세션 데이터가 session.gc_maxlifetime 초 전으로 변경된 경우) 세션 데이터를 그 이상 사용할 수 있습니다.

사실 때문에 나는 당신 자신의 세션 타임 아웃 매커니즘을 구현할 것을 권한다. 자세한 내용은 my answer to How do I expire a PHP session after 30 minutes?을 참조하십시오.

+0

session.cache_expire는이 기능과 어떻게 상호 작용합니까? – matteo

+5

'session.cache_expire'는 서버 응답의 HTTP 캐싱에만 영향을 미치지 만 세션 만료에는 영향을 미치지 않습니다. – Gumbo

+1

오, 알겠지만, cache_expire는 cache_limiter와 함께 작동합니다. PHP의 설명서는 이에 대해 매우 명확하지 않습니다. 여기에 문서화 된 내용 중 하나의 단어를 해독 할 수 없습니다 : http://es1.php.net/manual/en/function.session-cache-expire.php 내가 이것을 읽을 때까지 : http : //es1.php .net/manual/en/function.session-cache-limiter.php 감사합니다. @Gumbo – matteo

17

이것은 하나입니다. 세션은 1440 초 동안 지속됩니다 (24 분).

session.gc_maxlifetime 1440 1440 
5

If session.cookie_lifetime is 0, the session cookie lives until the browser is quit.

편집 : 다른 사람들은 session.gc_maxlifetime 설정을 언급했다. 세션 가비지 수집이 발생하면 가비지 수집기는 session.gc_maxlifetime 초보다 오래 액세스하지 않은 세션 데이터를 삭제합니다. 세션 쿠키의 유효 기간을 설정하려면 session_set_cookie_params()으로 전화하거나 session.cookie_lifetime PHP 설정을 정의하십시오. 이 설정이 session.gc_maxlifetime보다 큰 경우 session.gc_maxlifetime을 쿠키 수명보다 크거나 같은 값으로 늘려 세션이 만료되지 않도록해야합니다.

+0

브라우저를 닫고 페이지를 다시 열면 같은 sessionID가 표시됩니까? –

+1

브라우저가 아직 실행 중이면 예. 세션 쿠키는 브라우저 응용 프로그램이 종료 될 때 만 만료됩니다. –

+0

쿠키는 예이지만 브라우저를 열어 두어도 아무런 활동없이 세션 자체가 24 분 후에 만료됩니다. –

관련 문제