2012-11-11 4 views
2

기본적으로 PHP 세션은 사용자가 웹 사이트를 서핑하는 동안 만료되지 않습니다. 그러나 "사용자가 웹 사이트에서 서핑을하는 동안"은 입수 요청이 있다는 것을 의미합니다. 그럼에도 불구하고 새로운 요청이 있어야하는지, 아니면 하나의 활성 요청으로 세션을 유지하기에 충분한 지 알 수는 없습니다 ...php 세션이 게시물을 보내는 동안 만료 될 수 있습니까?

인스턴트 메시지로 게시글로 큰 파일을 업로드했습니다. 그런 다음 몇 시간이 걸릴 수 있습니다. 세션이 만료 될 예정입니까?

답변

0

세션의 수명은 ini 설정 session.gc-maxlifetime에 따라 다릅니다. 세션에 대한 모든 액세스 (읽기 및 쓰기)는 타이머를 재설정합니다. 시간 초과 후 세션 가비지 수집기가 실행되면 세션 값이 삭제됩니다.

기본값은 1440이며 24 분입니다. 따라서 적어도 24 분마다 세션에 액세스하는 히트가 있다면 세션 값은 그대로 유지됩니다. 당신이보다 살아 오래 머물 수있는 세션을해야하는 경우

, 당신은 예를 들어, (session_start() 전에 사용) ini_set으로 제한 시간을 연장 할 수 있습니다 :

ini_set('session.gc_maxlifetime', 24*60*60); // 24 hours 
+0

답변 해 주셔서 감사합니다. 나는 그것이 실제로 24 분 동안 지속되었다는 것을 알았지 만, 나는이 일생을 연장하지 않기를 바란다. (약간의 기억을 풀 때까지 더 오래 걸릴 것이기 때문에). 어쨌든, 내가 잘 이해한다면, 업로드가 진행 중일 때 업로드가 2400 만개 이상 지속 되더라도 세션이 만료되지 않도록 만료됩니다. – Buzut

0

그것은 안된다. 대개 $ _SESSION을 사용하여 작업하면 하루 정도 지속됩니다. 하지만 일부 서버에서 작동 할 수도 있습니다. 이 경우 쿠키를 추가해야합니다. 쿠키를 사용하면 사람이 온라인 상태 일 수있는 시간을 정확하게 조작 할 수 있습니다.

+0

죄송 합니다만이 답변에 대한 정확한 답변은 없습니다. 표준 구성에서 세션 쿠키는 브라우저가 닫힐 때까지 유지됩니다. session.gc-maxlifetime 시간 제한 내에 계속 액세스하면 세션은 무기한으로 작동합니다. –

+0

아마 그것이 하루 동안 지속되는 이유입니다. 브라우저는 절대로 닫을 수 없지만 구성 가능하고 쿠키는 장수명으로 사용합니다. 그래서 저는 그 대답에서 잘못된 부분이별로 없습니다. – Sylus

+0

세션이 여전히있을 수 있지만 저장 한 정보는 사라집니다. 실제로 쿠키에 저장된 세션의 ID 만 있고 세션의 관련 정보는 서버의 메모리에 있습니다. 그리고 내가 필요로하는 것은 관련 정보 (session.gc_maxlifetime에 설정된 값 이후에 만료 됨)입니다. 기본 session.gc_maxlifetime 값으로 하루나 이틀 후에도 $ _SESSION 배열을 얻고 있습니까? 브라우저가 닫혔는지 여부를 서버가 알지 못하기 때문에 ... – Buzut

관련 문제