How can the counter for online users be accurately calculated in the PHP script?

To accurately calculate the counter for online users in a PHP script, you can use sessions to track when a user visits the website and update the counter accordingly. Each time a user accesses the website, increment the counter and store the user's session ID to prevent duplicate counting. When a user leaves the website or their session expires, decrement the counter.

<?php
session_start();

// Check if user has a session ID
if (!isset($_SESSION['user_id'])) {
    $_SESSION['user_id'] = session_id();
    // Increment online user counter
    $online_users = isset($_SESSION['online_users']) ? $_SESSION['online_users'] + 1 : 1;
    $_SESSION['online_users'] = $online_users;
}

// Decrement online user counter when session expires
register_shutdown_function(function() {
    session_start();
    if (isset($_SESSION['user_id'])) {
        $online_users = isset($_SESSION['online_users']) ? $_SESSION['online_users'] - 1 : 0;
        $_SESSION['online_users'] = $online_users;
    }
});

// Display online user count
echo "Online Users: " . $_SESSION['online_users'];
?>