2012-05-16 6 views
2

$_SESSION[] 변수를 확장하는 다음 코드가 있습니다. 약 2-3 시간 후에 만료됩니다.gc_maxlifetime이 작동하지 않는 PHP에서 세션 확장

나는 session.gc_maxlifetime을 변경하여 22 시간으로 연장하려했으나 몇 시간 후에도 내 세션을 잃어 버렸습니다.

//start sessions 
ini_set('session.gc_maxlifetime', 60*60*22); // 22h - one day 

//Output just to make sure config was changed. 
echo ini_get("session.gc_maxlifetime"); 

session_start(); 

세션 기간을 늘리려면 어떻게해야합니까?

+0

22h가 하루입니까? 내가 뭐 놓친 거 없니? – mata

+0

w/e가 24h로 변경되었으므로 22h는 작업 중 9am에서 막히지 않는 것이 좋습니다. 그것은 약 7am에 당신을 로그 아웃 할 것이다, 그 다음 당신은 9am에 접속한다. –

+0

아마도 @mata는 사용자가 매일 아침 브라우저를 열 때 자동 로그 아웃을 막기를 원하기 때문일 수 있습니다. 나는 이것이 매우 똑똑한 해결책이라고 생각한다. – Sliq

답변

1

예, 다음과 같을 수 있습니다. session.cookie_lifetime 기본적으로 브라우저가 닫히면 종료됩니다.

클라이언트를 닫고 다시 열 경우 session.gc_maxlifetime은 중요하지 않습니다. 종료되지 않은 세션에만 적용됩니다.

또는 더 적은 session.gc_maxlifetime으로 다른 곳에서 호출 세션을 시작할 수도 있습니다. 종종 프레임 워크가이를 설정합니다. 세션 시작에 대한 호출을 반복하여 세션을 변경하지 마십시오.

+0

브라우저를 닫았다가 다시 열 수 있습니다. 세션은 정상입니다. –

+0

@EtienneDupuis 귀하의 session.cookie_lifetime은 (으)로 설정되어 있습니까? – Ray

+0

또한 브라우저에서 세션 쿠키를 확인하고 평생 시간을 확인하십시오. 적어도 gc_maxlifetime을 선택하는 것이 좋습니다. – Ray

0

on the manual page입니다. 동일한 디렉토리를 사용하여 세션 데이터를 저장하는 다른 스크립트가 maxlifetime을 설정하지 않은 경우 더 짧은 값을 대신 사용합니다.

1

php.ini에서 변경하십시오! 세션 수명은 파일 시스템 일이기 때문에 스크립트 별 설정은 항상 문제가됩니다.