• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    해결됨

DatabaseSessionHandler 클래스의 gc($maxlifetime) 메소드에 대해 질문드립니다.

22.03.02 23:28 작성 조회수 131

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();