Compteur d'utilisateurs actifs en PHP

Le compteur d'utilisateurs actifs

<?php

/* démarre une session */
session_start();

/* rafraîchit la valeur atime (dernier accès) du fichier */
$_SESSION["refresh"]= "";

/* la valeur du compteur */
$count = countActiveUsers();

/* affiche le template du compteur */
include "ActiveUsersCounterTemplate.php";



/* permet de compter le nombre d'utilisateurs en ligne */
function countActiveUsers(){

    $count = 0;

    /* récupère les sessions enregistrées */
    $sessionNames = scandir(session_save_path());

    /* pour chaque sessions */
    foreach($sessionNames as $sessionName) {

        /* récupère le temps du dernier accès (atime) */
        $last_time = stat(session_save_path() . "/" . $sessionName)[8];

        /* calcul de l'intervalle */
        $interval = time() - $last_time;

        /* si l'intervalle est inférieur à 5 minutes (300 secondes) 
        *  prend seulement les fichiers commencant par sess_
        */
        if(startsWith($sessionName, "sess_") && $interval < 300) {
            /* incrémente le compteur */
            $count++;
        }
    }

    return $count;
    
}

function startsWith ($string, $startString) 
{ 
    $len = strlen($startString); 
    return (substr($string, 0, $len) === $startString); 
} 

Le template (gabarit) du compteur

<!-- Badge Bootstrap -->
<span class="badge badge-success">Nombre d'utilisateurs actifs : <?= $count ?></span>

Affichage du compteur

<!DOCTYPE html>
<html lang="fr">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Page</title>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" />
    <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>
</head>

<body>
    <!-- Affiche le compteur -->
    <?php include 'Counter.php' ?>
</body>

</html>

Commentaires