>  기사  >  백엔드 개발  >  PHP에서 만료 시간이 엄격한 세션을 설정하는 방법에 대한 자세한 설명

PHP에서 만료 시간이 엄격한 세션을 설정하는 방법에 대한 자세한 설명

墨辰丷
墨辰丷원래의
2018-05-22 16:47:232449검색

이 글에서는 PHP에서 만료 시간을 엄격하게 제어하는 ​​세션을 설정하는 방법을 주로 소개하는데, 이는 좋은 참고 가치가 있습니다. 아래 에디터로 살펴보겠습니다

1.php 세션 유효기간

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

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

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

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

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

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

session.gc_probability = 1000이면 GC 프로세스는 매번 session_start()를 실행합니다. 재활용을 수행하기 위해 매번 호출됩니다.

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

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엄격한 제어Example_PHP 튜토리얼

php 세션 _PHP의 만료 시간을 엄격하게 제어합니다. Tutorial

php 엄격하게 제어세션 만료 시간_PHP Tutorial_Programming Technology

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

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