해결된 질문
작성
·
190
2
Session을 다루다 추가로 궁금한 것이 있어 여기에 남겨봅니다.
프로젝트에서 SessionHandlerInterface 구현체로 DatabaseSessionHandler 클래스를 사용하는 모습을 볼 수 있고, 이 클래스의 public functoin gc($maxlifetime) 메소드는 만료된 세션을 제거하는 용도로 사용하는 것을 알 수 있었습니다.
시스템 안에서 자동으로 gc($maxlifetime) 메소드가 호출 될 것으로 보이는데요.
이 경우 gc($maxlifetime) 메소드가 호출 될 때 파라미터로 전달되는 $maxlifetime 값(아규먼트)의 경우 php.init에 설정된 session_maxlifetime가 대입되는 것이 맞는지 궁금합니다.
(물론 php.ini 설정을 PHP 코드로 하여금 변경할 수 있겠지만요.)
답변 1
2
SessionHandlerInterface::gc() 에서 $maxlifetime 의 값은 php.ini 설정에서 session.gc_maxlifetime 이 전달되는 것이 맞습니다.
ini_set('session.gc_maxlifetime', 1000);
class MySessionHandler extends \SessionHandler
{
public function gc($maxlifetime)
{
var_dump($maxlifetime); // 1000
}
}
session_set_save_handler(new MySessionHandler());
session_start();
// SessionHandlerInterface::gc()
session_gc();