2009-09-06 2 views
2

주기적으로 tmp가 아닌 세션 파일을 제거합니다. 분명히 많은 세션 때문에 mismanage 세션입니다. 귀하의 세션을 어떻게 관리합니까, 금액이 너무 커지지는 않습니까? 새로운 세션을 만들지 않으려면 어떻게해야합니까?PHP : 세션 파일 수를 제한하는 방법은 무엇입니까?

명령 나는 그들이 진짜로 작동 방법을 잘 사용했다 : 그들은 몇 시간 이전보다 더있어 일단

ob_start(); 
session_save_path("/tmp/"); 
session_start(); 
ob_end_flush(); 
+1

어떤 세션 저장 핸들러를 사용합니까? PHP의 기본 (파일)? – Gumbo

답변

2

제대로 구성된 PHP 설치에서는 세션 데이터를 수동으로 정리할 필요가 없습니다. sessions in the manual 페이지를 읽고 configuration directives 일부를 확인하십시오. 확률은 gc_maxlifetime을 매우 높게 설정했으며 단순히 "만료"한도에 도달하지 않아 자동으로 수집됩니다. 런타임 중에 응용 프로그램이 세션 설정에 대해 이상한 값 (ini_set() 사용)을 설정하고 있지 않은지 확인해야합니다.

PHP에는 session_start()에서 실행되는 내부 알고리즘이있어서 가비지 클리닝 실행 여부와 이전 세션 파일 제거 여부를 결정합니다. 성능상의 이유로, 매번 실행할 기본 기회는 1 %라고 생각하므로 평균적으로 가비지 수집 루틴은 100 session_start() 호출마다 시작됩니다. 이 정도면 충분하지 않다면 gc_divisor 설정을 1보다 높게 설정할 수 있습니다.

0

PHP 오래된 세션 파일을 제거 자동으로해야한다. session.gc_probability, session.gc_divisor 및 session.gc_maxlifetime 설정에 홀수 값이 포함될 수 있습니다. 자세한 내용과 기본값은 sessions runtime configuration section of the PHP manual을 확인하십시오.

이것은 독자적으로 관리 할 수있는 (또는해야 할) 것이 아닙니다.

너무 많은 파일로 끝나는 경우 session.save_path의 고급 설정을 사용하여 세션에 대한 하위 디렉토리를 만듭니다. 이렇게하면 개별 파일에 대한 파일 시스템 액세스가 빨라집니다.

관련 문제