>  기사  >  백엔드 개발  >  PHP 세션의 자동 재활용 메커니즘에 대한 자세한 설명

PHP 세션의 자동 재활용 메커니즘에 대한 자세한 설명

伊谢尔伦
伊谢尔伦원래의
2017-04-26 17:44:552941검색

일반적인 상황에서는 페이지에 제공된 "종료" 버튼을 클릭하여 이 세션을 삭제할 수 있습니다. 다만, 사용자가 종료 버튼을 클릭하지 않고 브라우저를 직접 닫거나, 인터넷 연결을 끊거나, 정전 등으로 컴퓨터를 직접 종료한 경우에는 서버에 저장된 세션 파일이 삭제되지 않습니다. 브라우저를 닫아도 다음에 다시 로그인하려면 새 세션 ID를 할당해야 하는데 이는 php.ini에서 session.cookie_lifetime = 0을 설정하여 세션 ID를 설정했기 때문입니다. 클라이언트 쿠키의 만료 날짜는 브라우저에 전송되는 쿠키의 수명을 초 단위로 지정합니다. 값 0은 "브라우저가 닫힐 때까지"를 의미하며, 기본값은 0입니다.

시스템이 세션에 유효 기간을 부여하면 브라우저 열림 여부에 관계없이 세션 ID가 자동으로 사라집니다. . 클라이언트의 세션 ID는 사라지지만, 서버에 저장된 세션 파일은 삭제되지 않습니다. 따라서 세션 ID로 참조되지 않는 서버측 세션 파일은 "쓰레기"가 됩니다. 이러한 정크 세션 파일이 시스템에 과도한 부하를 일으키는 것을 방지하기 위해(세션은 쿠키처럼 반영구적으로 존재하지 않기 때문에) 시스템에는 절대 사용되지 않는 세션 파일(정크 파일)에 대한 자동 정리 메커니즘이 있습니다.

서버에 저장되는 세션 파일은 일반 텍스트 파일이므로 해당 파일의 수정 시간을 갖습니다. "가비지 수집 프로그램"이 시작된 후 만료된 모든 세션 파일은 세션 파일 수정 시간을 기준으로 삭제됩니다.

"쓰레기 수집 프로그램"의 시작 메커니즘은 무엇입니까?

session_start()함수가 호출되면 "가비지 수집 프로그램"이 시작됩니다. 웹 사이트에는 여러 스크립트가 있으며 각 스크립트는 세션을 시작하기 위해 session_start() 함수를 사용해야 하며 동시에 많은 사용자가 액세스하게 됩니다. 이로 인해 session_start() 함수가 호출될 가능성이 매우 높습니다. 1초에 몇 번이고, 매번 "가비지 수집 프로그램"을 시작하는 것은 무리입니다. 적어도 15분에 한 번씩 '쓰레기 수거 프로그램'을 시작해도 하루에 100번 이상 청소를 하게 되는데, 이는 너무 잦은 일이다. php.ini 파일의 session.gc_probability session.gc_divisor 옵션을 수정하여 가비지 수집 프로그램이 시작될 확률을 설정합니다. 시스템은 session.gc_probability/session.gc_divisor 공식(예: 옵션 session.gc_probability = 1, 옵션 session.gc_divisor = 100)을 기반으로 확률을 계산하므로 확률은 1/100이 됩니다. is session_start() "가비지 수집 프로그램"은 함수가 100번 호출될 때까지 시작되지 않습니다. 따라서 세션 페이지에 더 자주 액세스할수록 세션 페이지가 시작될 가능성이 줄어듭니다. 일반적인 권장 사항은 시작하기 전에 1/(1000~5000)번으로 1000~5000번 호출하는 것입니다.

위 내용은 PHP 세션의 자동 재활용 메커니즘에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.