개발! 딱 깔끔하고 센스있게!

php 세션 시간 추가 본문

개발 스크랩 메모/PHP

php 세션 시간 추가

렉사이 2020. 12. 18. 22:36

나는 php 세션 시간을 6시간까지 늘려 보려고 한다.

다음은 세션 시간을 늘리는 코드:

ini_set('session.gc_maxlifetime', 60 * 60 * 6); // 6 Hours 

그러나 그 회화 시간은 1시간인 것 같다.

어떠한 건의도 매우 감사합니다.

또 이 기능을 어떻게 테스트할 것인지 6시간 동안 회화가 초과되었는지 살펴볼 필요가 없다.

대답

정경

Debian Linux 또는 Ubuntu Linux 실행입니다.

PHP 세션의 지속 기간이 기본 1440초 (24분) 를 초과하기를 바랍니다.

그래서 이렇게 하세요:

ini_set('session.gc_maxlifetime', 10800); # 3 hours 

이 설정을 사용하면 사용자가 브라우저를 닫지 않으면 세션은 최소 3시간 동안 유지해야 합니다.

하지만 네가 무엇을 하든 24-54분 후에 회화는 삭제된다.

PHP 는 gc maxlifetime 설정을 무시한 것 같습니다.

왜 그래

Debian 과 Ubuntu Linux PHP 세션 동작을 반복합니다.

자세히 살펴보면 세션.반면 / etc/cron.d/php5 중 특정 Debian cron 작업, 30분마다 한 번 실행!

cron 작업은 php.ini 속의 global session.gcu maxlifetime 에서 쓰레기 수집을 합니다.

프로그램의 session.gcumaxlifetime 무시합니다.

해결 방안

cron 작업과 / 또는 php.ini 수정할 수 있지만 시스템 기본값을 수정하지 않는 상황에서 이 문제를 복구할 수 있습니다.

더 나은 해결 방안은 자신의 세션 목록을 생성하고 일반 디렉터리를 제외한 한 곳에서 PHP 세션 쓰레기를 사용합니다.

이를 위해 session.gcu maxlifetime, sesssion.gcu probability, session.gcu 나누기 및 sesssion.sion.sion.save 경로:

# Session lifetime of 3 hours ini_set('session.gc_maxlifetime', 10800); # Enable session garbage collection with a 1% chance of # running on each session_start() ini_set('session.gc_probability', 1); ini_set('session.gc_divisor', 100); # Our own session save path; it must be outside the # default system save path so Debian's cron job doesn't # try to clean it up. The web server daemon must have # read/write permissions to this directory. session_save_path(APP_PARENT_DIR . '/sessions'); # Start the session session_start(); 
Comments