2012-03-21 3 views
2
session.save_handler = memcached 
session.save_path = "127.0.0.1:11211" 
session.gc_maxlifetime = 86400 

나머지는 표준입니다. 마지막으로 사용자가 페이지를 방문한 이래로 세션이 최소 86400 초 동안 지속될 것으로 기대합니다. 즉, 세션을 시작하고 5 분 후에 페이지를 방문하면 세션은 다른 86400 초 후에 만료됩니다.PHP memcached 세션이 파란색으로 만료됩니다.

그러나 이제 약 1 시간 후에 세션이 만료됩니다. phpMemcachedAdmin에 대한 스크린 샷을 첨부했습니다.

귀하의 세션 쿠키 일찍 만료 있습니다

enter image description here

답변

8

적용 할 수있는 다른 매개 변수가 있습니다. session_set_cookie_params (86400)를 호출하면 실제 세션만큼 세션 쿠키가 존재하게됩니다.

또한 gc_maxlifetime은 세션 수명의 최대 값을 설정합니다. http://www.php.net/manual/en/session.configuration.php#ini.session.gc-probability을 : session.gc_probability와 결합

session.gc_divisor는이 gc (쓰레기 수거) 프로세스가 모든 세션 초기화에서 시작 확률을 정의하는 가비지 컬렉션은 확률에 의해 트리거되는 것을 잊지 마십시오. 확률은 gc_probability/gc_divisor를 사용하여 계산됩니다. 1/100은 각 요청에 대해 GC 프로세스가 시작될 확률이 1 %임을 의미합니다. session.gc_divisor의 기본값은 100입니다.

이러한 설정을 확인하거나 변경할 수도 있습니다.

+0

내 설정이'session_set_cookie_params'를 덮어 쓰고있었습니다. 그러나 이것은 내 질문에 부분적으로 만 응답합니다. 아마도'session_set_cookie_params (60)'을 설정했습니다. 세션이 마지막 후속 호출에서 60 초가 아닌 첫 번째로드에서 60 초 동안 만료되는 이유는 무엇입니까? 세션을 확장 할 수있는 방법이 있습니까? – Gajus

+1

쿠키 만료일은 생성 될 때만 설정됩니다. 이후의 모든 통화는 세션 (서버 측)을 연장하지만 쿠키는 60 초 후에 사라집니다. 따라서 서버 측은 여전히 ​​존재하지만 클라이언트는 세션 쿠키를 삭제하고 세션 ID를 잃어 버리게됩니다. – Tchoupi

+0

서버 시간과 일치하도록 쿠키 만료 기간을 연장하려면 어떻게합니까? – Gajus

0
; Document expires after n minutes. 
; http://php.net/session.cache-expire 
session.cache_expire = 1440 

이 설정은 memcached 세션 처리기를 사용하는 경우 영향을받을 수 있습니다.

+0

"HTTP 캐시 만료 시간 만 변경됨"- http://php.net/manual/en/function.session-cache-expire.php#81265 –

관련 문제