>  기사  >  백엔드 개발  >  PHP에서 세션 만료 시간을 설정하는 방법

PHP에서 세션 만료 시간을 설정하는 방법

coldplay.xixi
coldplay.xixi원래의
2020-11-02 13:40:224191검색

php 세션 만료 시간 설정 방법: 먼저 memcache 또는 Redis를 사용하여 세션을 저장하고 만료 시간을 설정한 다음 세션 클래스를 만들고, 세션이 기록되면 마지막 시간을 읽을 때도 만료 시간이 기록됩니다. , 만료 시간에 따라 만료되었는지 확인하십시오.

PHP에서 세션 만료 시간을 설정하는 방법

php 세션 만료 시간 설정 방법:

1. PHP 세션 유효 기간

PHP의 세션 유효 기간은 클라이언트가 24분 이상 새로 고쳐지지 않는 경우 기본적으로 1440초(24분)입니다. 24분, 현재 세션이 재활용되고 무효화됩니다.

사용자가 브라우저를 닫으면 세션이 종료되고 세션도 무효화됩니다.

php.ini에서 session.gc_maxlifetime을 수정하여 세션 수명 주기를 설정할 수 있지만, 이 시간이 초과되면 세션 정보가 즉시 삭제된다는 보장은 없습니다. 확률에 따라 GC가 시작되기 때문에 오랜 시간 동안 GC가 시작되지 않을 수 있습니다. 그러면 session.gc_maxlifetime을 초과한 후에도 많은 수의 세션이 여전히 유효합니다.

2. .session.gc_maxlifetime, session.gc_probability, session.gc_divisor 설명

session.gc_maxlifetime = 30은 30초 후에도 세션 파일에 접근하지 않으면 만료된 세션으로 간주하여 대기 중임을 의미합니다. GC 재활용.

GC 프로세스 호출 확률은 session.gc_probability/session.gc_divisor를 통해 계산되며, session.gc_divisor의 기본값은 1000입니다.

session.gc_probability = 1000이면 GC 프로세스는 호출될 때마다 session_start()를 실행하여 수행합니다. 재활용.

session.gc_probability/session.gc_divisor의 확률을 높이면 도움이 되지만 성능에 심각한 영향을 미치게 됩니다.

3. 세션 만료 방법을 엄격하게 제어합니다

1. Memcache/Redis를 사용하여 세션을 저장하고 만료 시간을 설정합니다. Memcache/redis의 재활용 메커니즘은 확률을 기반으로 하지 않기 때문에 세션을 보장할 수 있습니다. 만료된 후에는 무효가 됩니다.

2. PHP만 사용하여 구현하고, 세션 클래스를 생성하고, 세션 작성 시 만료 시간을 작성합니다. 읽을 때 만료 시간을 기준으로 만료 여부를 확인하십시오.

<?php
/**
 * Session控制类
 */
class Session{
  /**
   * 设置session
   * @param String $name  session name
   * @param Mixed $data  session data
   * @param Int  $expire 超时时间(秒)
   */
  public static function set($name, $data, $expire=600){
    $session_data = array();
    $session_data[&#39;data&#39;] = $data;
    $session_data[&#39;expire&#39;] = time()+$expire;
    $_SESSION[$name] = $session_data;
  }
  /**
   * 读取session
   * @param String $name session name
   * @return Mixed
   */
  public static function get($name){
    if(isset($_SESSION[$name])){
      if($_SESSION[$name][&#39;expire&#39;]>time()){
        return $_SESSION[$name][&#39;data&#39;];
      }else{
        self::clear($name);
      }
    }
    return false;
  }
  /**
   * 清除session
   * @param String $name session name
   */
  private static function clear($name){
    unset($_SESSION[$name]);
  }
}
?>

데모:

<?php
session_start();
$data = &#39;123456&#39;;
session::set(&#39;test&#39;, $data, 10);
echo session::get(&#39;test&#39;); // 未过期,输出
sleep(10);
echo session::get(&#39;test&#39;); // 已过期
?>

관련 무료 추천: 프로그래밍 비디오 코스

위 내용은 PHP에서 세션 만료 시간을 설정하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.