What are some best practices for handling session expiration and maintenance in PHP?

Session expiration and maintenance in PHP can be handled by setting a reasonable session timeout value, checking for session expiration on each page load, and regenerating the session ID periodically to prevent session fixation attacks.

// Set session timeout value to 30 minutes
session_start();
$session_timeout = 1800; // 30 minutes
if (isset($_SESSION['last_activity']) && (time() - $_SESSION['last_activity'] > $session_timeout)) {
    // Expire session if inactive for too long
    session_unset();
    session_destroy();
}
$_SESSION['last_activity'] = time();

// Regenerate session ID every 30 minutes
if (!isset($_SESSION['last_regenerated']) || (time() - $_SESSION['last_regenerated']) > $session_timeout) {
    session_regenerate_id(true);
    $_SESSION['last_regenerated'] = time();
}