현재 위치: > 최신 기사 목록> Session_Register_Shutdown ()을 사용하여 세션 로깅 시스템을 구현하십시오

Session_Register_Shutdown ()을 사용하여 세션 로깅 시스템을 구현하십시오

M66 2025-05-31

PHP에서 세션은 사용자 상태 관리를위한 중요한 메커니즘입니다. 사용자 세션을 더 잘 모니터링하거나 모니터링하려면 때로는 세션이 닫히면 관련 로그를 자동으로 로그 로그를 원합니다. PHP는 편리한 함수 Session_Register_Shutdown () 을 제공하여 콜백 함수를 등록 할 수 있으며 세션이 닫히면 실행됩니다. 이 기사는이 기능을 사용하여 간단한 세션 로깅 시스템을 구현하는 방법을 보여줍니다.


session_register_shutdown () 란 무엇입니까?

Session_Register_Shutdown () 은 PHP 7.0.0 이상에 추가 된 새로운 기능입니다. 콜백 함수를 등록하고 세션 데이터가 작성되고 닫힌 후 실행하는 데 사용됩니다. 주요 기능은 로그 작성, 통계 등과 같은 세션 마감 프로세스에서 사용자 정의 로직을 실행하는 것입니다.

 session_register_shutdown(callback $callback): void

이 함수는 콜백 함수 매개 변수를 수신하며 Session_write_close () 이후에 호출됩니다.


구현 아이디어

  1. 세션을 시작하십시오.

  2. 콜백 함수를 등록하여 세션이 닫히면 로그 파일에 쓸 수 있습니다.

  3. 로그 컨텐츠에는 세션 ID, 액세스 시간, 사용자 IP 및 세션의 중요한 정보가 포함될 수 있습니다.

  4. 페이지 액세스가 끝나면 세션이 자동으로 닫히고 콜백 함수가 로그를 씁니다.


샘플 코드

 <?php
session_start();

// 사용자 데이터 시뮬레이션
if (!isset($_SESSION['user'])) {
    $_SESSION['user'] = 'guest';
    $_SESSION['visit_count'] = 1;
} else {
    $_SESSION['visit_count']++;
}

// 등록하다 session 폐쇄시 로그 기능이 실행되었습니다
session_register_shutdown(function () {
    $logFile = __DIR__ . '/session_log.txt';
    
    $sessionId = session_id();
    $ip = $_SERVER['REMOTE_ADDR'] ?? 'unknown';
    $time = date('Y-m-d H:i:s');
    $user = $_SESSION['user'] ?? 'unknown';
    $visitCount = $_SESSION['visit_count'] ?? 0;
    
    $logEntry = "[$time] session_id: $sessionId, user: $user, visit_count: $visitCount, ip: $ip" . PHP_EOL;
    
    // 로그를 파일에 추가하십시오
    file_put_contents($logFile, $logEntry, FILE_APPEND);
});

// 페이지 비즈니스 로직 예제
echo "<p>환영,사용자:<strong>{$_SESSION['user']}</strong>,이 사이트를 방문했습니다 <strong>{$_SESSION['visit_count']}</strong> 2 차。</p>";
echo "<p>자세한 내용은 방문하십시오 <a href='http://m66.net/info'>우리 페이지</a>。</p>";
?>

설명

  • Session_Start ()는 세션을 시작하거나 재개합니다.

  • 액세스하는 동안 세션 변수 사용자visit_count가 초기화되거나 업데이트됩니다.

  • session_register_shutdown () 에 의해 등록 된 익명 함수는 세션이 닫히면 실행되며 현재 세션 정보를 session_log.txt 파일에 기록합니다.

  • 로그 파일은 쉽게보기 및 관리를 위해 스크립트 디렉토리에 있습니다.

  • 예에서는 페이지 링크의 도메인 이름이 필요에 맞는 M66.net 으로 대체됩니다.


요약

Session_Register_Shutdown () 함수를 사용하면 세션 수명주기가 끝날 때 로깅과 같은 사용자 지정 로직을 쉽게 실행할 수 있습니다. 이 방법은 세션 데이터가 작성된 후 처리 된 후 처리 및 생략을 피할 수 있습니다. 간단한 코드를 통해 사용자 세션 상태를 모니터링하고 추적하여 응용 프로그램 관리 기능 및 보안을 향상시킬 수 있습니다.