How can the Session Garbage Collector be effectively integrated with a "gentle" Session Timeout system in PHP?

The Session Garbage Collector in PHP can be effectively integrated with a "gentle" Session Timeout system by setting the session.gc_probability and session.gc_divisor values appropriately to trigger garbage collection more frequently. Additionally, a custom session timeout mechanism can be implemented by storing a timestamp in the session data and checking it against the current time to determine if the session should be considered expired.

// Set the probability of the garbage collector running on each session start
ini_set('session.gc_probability', 1);
ini_set('session.gc_divisor', 100);

// Start the session
session_start();

// Check if session is expired based on custom timeout value
if (isset($_SESSION['last_activity']) && time() - $_SESSION['last_activity'] > 1800) {
    session_unset();
    session_destroy();
    // Redirect to login page or perform any other necessary action
}

// Update last activity timestamp
$_SESSION['last_activity'] = time();