2014-03-19 6 views
3

PHP에서 gc_maxlifetime을 설정하려고합니다.PHP ini_set 세션 gc_maxlifetime이 작동하지 않습니다.

여기에 'header.php'의 코드가 있으며 모든 페이지를 포함합니다.

ini_set('session.cookie_lifetime', 1); 
ini_set('session.gc_maxlifetime', 1); 
session_start(); 

나는 즉, 세션 이 삭제되지 않은,

echo ini_get('session.gc_maxlifetime'); 

그것을 테스트하고는 1

로 설정 않습니다하지만 여전히 로그인 상태를 유지한다.

가능한 이유는 무엇입니까?

+0

[좋은 설명서를 읽으십시오] (http://php.net/manual/session.configuration.php#ini.session.gc-maxlifetime) - * "는 데이터 'garbage'로 표시되고 ** 잠재적으로 ** 정리됨 * – Phil

+0

'gc_maxlifetime'을 설정하여 어떤 문제를 해결하려고합니까? –

+0

@ Phil 설명서를 읽고 몇 시간 동안 인터넷 검색을 했는데도 문제를 해결할 수 없습니다. – andytt

답변

4

왜 가비지 수집을 실행하지 않습니까?

GC가 항상 모든 요청에 ​​대해 실행되는 것은 아니며 기본 PHP 설정은 GC를 실행할 1 % 기회입니다. session.gc_probability (기본 1)/session.gc_divisor (기본 100) = 0.01 (1 %의 확률)

관련 수동 입력 : http://php.net/manual/en/session.configuration.php#ini.session.gc-probability

나의 제안은 세션이 감동 된 마지막 시간을 저장하고 모든 페이지에 그 값에 대해 확인하는 것입니다 로드하고 충분한 시간이 지난 경우 session_destroy을 입력하고 사용자를 로그인 페이지로 리디렉션하십시오.

+0

그것은 효과가있다 !! 감사!! – andytt

+0

또 다른 문제가 있습니다. 시간을 1HR로 설정하려면 어떻게해야합니까? 디폴트'gc_maxlifetime'는 24 분입니다. 나는'ini_set''gc_maxlifetime'을 사용해야할까요? – andytt

+0

GC_MAXLIFETIME을 남용하지 마십시오. 내 제안을 읽으십시오. – hank