> 백엔드 개발 > PHP 튜토리얼 > PHP 세션의 유효 기간에 대한 몇 가지 질문

PHP 세션의 유효 기간에 대한 몇 가지 질문

WBOY
풀어 주다: 2016-09-15 11:30:58
원래의
1044명이 탐색했습니다.

php.ini는 기본 session.gc_maxlifetime 값을 1440으로 설정합니다. 이 값을 어떻게 이해해야 합니까?

로그인이 필요한 웹사이트를 방문했을 때, 한동안 운영을 하지 않으면 로그인이 실패하지 않는 경우가 대부분입니다. 인터넷에서 정보를 읽고 세션 저장 방법과 재활용 메커니즘에 대해 배웠지만 여전히 명확하게 이해하지 못하는 문제가 있습니다.

이 재활용 메커니즘으로 인해 발생할 수 있는 문제를 고려하지 말고 쿠키도 고려하지 마십시오(쿠키가 항상 유효하다고 가정).

session.gc_maxlifetime이 기본값인 1440으로 설정되어 있다고 가정하고 처음 로그인할 때 세션을 운영하고, 사용자 정보를 저장하고 그 이후에는 세션을 변경하지 않았습니다.

  • 앞으로 아무리 요청을 많이 해도 이 세션의 수정 시간은 로그인한 시간이라는 게 사실인가요?

  • 본 사이트 운영 여부와 상관없이 1440초가 지나면 세션이 무효가 되나요?

  • 아니면 제가 이 웹사이트를 운영했다면 세션 수정 시간이 업데이트된다는 뜻인가요? 즉, 1440년 이상 이 웹사이트에서 활동이 없는 경우에만 세션이 삭제된다는 의미입니다. 초?

  • 아니면 수정시간 기준으로 세션이 삭제되지 않고, 일정 시간 동안 비활성화된 후에만 세션이 삭제되나요?

더 자세한 답변을 듣고 싶습니다. 감사합니다!

답글 내용:

php.ini는 기본 session.gc_maxlifetime 값을 1440으로 설정합니다. 이 값을 어떻게 이해해야 합니까?

로그인이 필요한 웹사이트를 방문했을 때, 한동안 운영을 하지 않으면 로그인이 실패하지 않는 경우가 대부분입니다. 인터넷에서 정보를 읽고 세션 저장 방법과 재활용 메커니즘에 대해 배웠지만 여전히 명확하게 이해하지 못하는 문제가 있습니다.

이 재활용 메커니즘으로 인해 발생할 수 있는 문제를 고려하지 말고 쿠키도 고려하지 마십시오(쿠키가 항상 유효하다고 가정).

session.gc_maxlifetime이 기본값인 1440으로 설정되어 있다고 가정하고 처음 로그인할 때 세션을 운영하고, 사용자 정보를 저장하고 그 이후에는 세션을 변경하지 않았습니다.

  • 앞으로 아무리 요청을 많이 해도 이 세션의 수정 시간은 로그인한 시간이라는 게 사실인가요?

  • 본 사이트 운영 여부와 상관없이 1440초가 지나면 세션이 무효가 되나요?

  • 아니면 제가 이 웹사이트를 운영했다면 세션 수정 시간이 업데이트된다는 뜻인가요? 즉, 1440년 이상 이 웹사이트에서 활동이 없는 경우에만 세션이 삭제된다는 의미입니다. 초?

  • 아니면 수정시간 기준으로 세션이 삭제되지 않고, 일정 시간 동안 비활성화된 후에만 세션이 삭제되나요?

더 자세한 답변을 듣고 싶습니다. 감사합니다!

SESSION은 페이지에 액세스할 때마다 재활용됩니다.

재활용 확률 = session.gc_probability/session.gc_divisor, 기본값은 1/1000입니다. 1로 설정하면 SESSION 수명(session.gc_maxlifetime, 기본값은 1440초)을 초과할 때마다 꺼집니다. 24분) 액세스되면 SESSION은 확실히 재활용됩니다. 클라이언트가 SESSION의 변수에 액세스할 때마다 SESSION 파일의 액세스 시간은 클라이언트가 요청하기 위해 저장한 PHPSESSID 쿠키를 기반으로 업데이트됩니다. SESSION. 클라이언트의 쿠키가 만료되면 현재 서버의 SESSION 파일이 만료 및 복구되지 않았음에도 불구하고 어떤 SESSION에 액세스하고 있는지 알 수 없으므로 낭비가 발생합니다. 사용자가 "종료" 버튼을 클릭하여 시스템을 종료하면 프로그램은 쿠키와 세션을 로그아웃할 수 있습니다. 사용자가 시스템에 알리지 않고 브라우저를 닫고 종료하면 sess_PHPSESSID 파일은 수동으로만 재활용될 수 있습니다. >

PHP 세션은 수동 재활용 메커니즘을 채택합니다. 만료된 세션 파일은 자동으로 사라지지 않습니다. 대신 요청을 통해 "재활용"을 트리거하여 만료된 세션을 처리합니다. 만료된 세션 삭제:

24분 전의 파일을 찾아 삭제합니다.


이 값은 페이지를 마지막으로 새로 고친 이후의 시간입니다. 즉, 페이지를 새로 고친 후 24분 동안 아무 작업도 수행하지 않으면 서버가 세션을 삭제합니다. 그러나 삭제 여부는 php.ini에 설정된 삭제 적중률과 관련이 있습니다. 예를 들어 session.gc_divisor=1000, session.gc_probability=1은 1,000명의 사용자가 session_start()를 호출할 때마다 삭제된다는 의미입니다. 100% 디스크에서 쓸모 없는 세션 파일을 삭제하기 위해 가비지 수집 메커니즘이 실행됩니다. 그리고 이 삭제는 어떤 사용자의 세션 파일인지 확실하지 않습니다. 따라서 세션은 세션 기술이며 브라우저를 닫고 다시 작성하는지 여부와 함께 이해할 수 있습니다. 즉, 브라우저를 닫는 한 세션 연결이 끊어지고 자연스럽게 세션이 무효화됩니다. . . . 제 개인적인 이해는 간단합니다. 실수가 있으면 누군가 고쳐주셨으면 좋겠습니다.

관련 라벨:
php
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿