세션 처리 session_gc

(PHP 7 >= 7.1.0, PHP 8)

session_gc — 세션 데이터 가비지 수집 수행


설명

session_gc(): int|false

session_gc()는 세션 데이터 GC(가비지 컬렉션)를 수행하는 데 사용됩니다. PHP는 기본적으로 확률 기반 세션 GC를 수행합니다.

확률 기반 GC는 어느 정도 작동하지만 몇 가지 문제가 있습니다. 1) 트래픽이 적은 사이트의 세션 데이터는 원하는 기간 내에 삭제되지 않을 수 있습니다. 2) 트래픽이 많은 사이트의 GC는 너무 빈번한 GC일 수 있습니다. 3) GC는 사용자의 요청에 따라 수행되며 사용자는 GC 지연을 경험하게 됩니다.

따라서 UNIX 계열 시스템의 경우 "cron"을 사용하는 프로덕션 시스템에 대해 주기적으로 GC를 실행하는 것이 좋습니다. session.gc_probabilit를 0으로 설정하여 확률 기반 GC를 비활성화해야 합니다.


매개변수

이 함수에는 매개변수가 없습니다.


반환 값

session_gc()는 성공하면 삭제된 세션 데이터의 수를 반환하고 실패하면 false를 반환합니다.

이전 저장 핸들러는 삭제된 세션 데이터의 수를 반환하지 않고 성공/실패 플래그만 반환합니다. 이 경우 실제로 삭제된 데이터와 상관없이 삭제된 세션 데이터의 수는 1이 됩니다.


Examples

예제 #1 cron과 같은 작업 관리자를 위한 session_gc() 예제

                  
<?php
// Note: This script should be executed by the same user of web server process.

// Need active session to initialize session data storage access.
session_start();

// Executes GC immediately
session_gc();

// Clean up session ID created by session_gc()
session_destroy();
?>
                  
                

예제 #2 사용자 액세스 스크립트에 대한 session_gc() 예제

                  
<?php
// Note: session_gc() is recommended to be used by task manager script, but
// it may be used as follows.

// Used for last GC time check
$gc_time = '/tmp/php_session_last_gc';
$gc_period = 1800;

session_start();
// Execute GC only when GC period elapsed.
// i.e. Calling session_gc() every request is waste of resources.
if (file_exists($gc_time)) {
    if (filemtime($gc_time) < time() - $gc_period) {
        session_gc();
        touch($gc_time);
    }
} else {
    touch($gc_time);
}
?>
                  
                

기타