2011-02-08 11 views
1

약 15 분 후에 응용 프로그램 세션이 예기치 않게 만료됩니다. 4 시간 후에 만료되도록해야합니다.PHP 세션이 너무 일찍 만료됩니다.

서버는 Centos 5.5이고 PHP는 5.3.2입니다.

다음은 내 코드 (전체 헤더에 포함)입니다.

<?php 
session_name('MobileSuiteHQ'); 
if(!session_id()) { 
    session_start(); 
} 
ini_set('memory_limit', '512M'); 
ini_set('session.gc_maxlifetime', 14400000); 
ini_set('session.cookie_lifetime', 14400000); 
ini_set('session.gc_divisor', 1000); 
ini_set('session.use_cookies', 0); 
ini_set('max_execution_time', 300); 
ini_set('session.name','MobileSuiteHQ'); 
?> 

내 htaccess로 파일에는 다음이 포함

php_value session.gc_maxlifetime 14400000 
php_value session.cookie_lifetime 14400000 
php_value session.use_cookies 0 
php_value session.gc_divisor 1000 

어떤 도움이나 통찰력 greatful 일 것이다.

EDIT : .htaccess 파일을 업데이트했지만 세션이 시작되지 않았습니다. 로그인 할 수 없습니다. 그래서 지금 제거했습니다 :

php_value session.use_cookies 0 

이제는 로그인 할 수있게되었습니다.

+0

쿠키가 요청과 함께 들어 왔습니까? 세션이 클라이언트 쪽에서 끝나거나 서버 끝에서 죽어 가고 있습니까? – profitphp

+0

하지만 세션은 일반적으로 작동합니까? – Gumbo

+0

@profitphp : 세션 ID에 대한 쿠키 사용이 비활성화되어 있습니다 (* session.use \ _cookies * 참조). – Gumbo

답변

3

초기 검사에서 gc_maxlifetime 및 cookie_lifetime 설정을 낮 춥니 다. 이론적으로 32 비트 OS가 2147483647까지 올라갈 수 있어야하지만, 여전히 14400000은 PHP가 대응할 수있는 약간의 PHP라고 생각됩니다.

평생 4 시간 만 필요한 경우 14400은 완벽한 설정 일 수 있으며 위에 설명한 이유로 문제를 해결할 수 있습니다.

+0

14400000은 4 시간 (밀리 초)입니다. 나는 그것이 도움이되는지, 또한 서버가 64 비트인지보기 위해 그것을 낮출 것이다. –

+4

그래도 cookie_lifetime은 초 단위로 값을 예상하고 있습니다 :) –

+0

새 설정을 반영하도록 업데이트했습니다. –

5

나는 CentOS에 대해 잘 모르지만, 우분투에서는 php5 패키지가 매 시간마다 9 분과 39 분의 세션 파일을 24 분 동안 제거 할 수있는 /etc/cron.d/php5 파일을 설치합니다. 따라서 최소한 24 분의 세션과 54 분의 세션을 가질 수 있습니다.

+0

감사합니다. 네이트, 우리는 mysql 세션 솔루션으로 변경했습니다. –

관련 문제