>  기사  >  백엔드 개발  >  PHP를 사용하여 만료 시간이 엄격한 세션을 설정하는 방법

PHP를 사용하여 만료 시간이 엄격한 세션을 설정하는 방법

jacklove
jacklove원래의
2018-06-09 10:25:102323검색

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]);
    }
}
?>

demo:

<?phpsession_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 중국어 웹사이트를 참조하세요.

관련 권장사항:

mysql 타임스탬프 형식 지정 함수 from_unixtime

mysql 함수 concat 및 group_concat 사용에 대한 지침

mysql innodb 오류 처리 방법에 대한 설명 시작하고 다시 시작할 수 없습니다

php 중국어 웹사이트 학습 주제: php 세션 (사진, 텍스트, 비디오, 사례 포함)

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

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