Nombre de connectés entre deux dates

Nombre de connectés entre deux dates

par Jean-François PETIT,
Nombre de réponses : 4

Bonjour j'aimerai avoir une requete sql me permettant d'avoir le nombre de connectés entre deux dates. (verifier le nombre de sessions qui se crées)

En effet comme la plus part nous allons mettre en place des examens en lignes et nous voulons monitorer et verifier avec un crash test de connexion simultanée  soit le nombre total d'utilisateur se connectant entre deux dates ( minutes )

j'ai utilisé cette requete mais pas sur de savoir s'il faut utiliser le champ currentlogin de la table user ou lastlogin , d ailleur quelle est la différence voila la requete pour info j'avais 600 personnes en 5 minutes mais cette requete me montre 380 personnes

SET @DEBUT = UNIX_TIMESTAMP ('2020-04-14 17:00:00');
SET @FIN   = UNIX_TIMESTAMP ('2020-04-14 17:05:00');

SELECT count(username) as users from mdl_user
WHERE  currentlogin > @DEBUT
AND currentlogin < @FIN;

 

Merci pour vos éclairages

Moyenne des évaluations  -
En réponse à Jean-François PETIT

Re: Nombre de connectés entre deux dates

par Séverin Terrier,
Avatar Documentation writers Avatar Moodleurs particulièrement utiles Avatar Testeurs Avatar Traducteurs
Bonjour Jean-François,

Pour autant que je sache, currentlogin correspond au dernier login, et lastlogin à celui précédent (l'avant dernier).

Ça peut se vérifier facilement avec :
SELECT COUNT(1) FROM mdl_user WHERE lastlogin > currentlogin;
qui devrait donner 0 résultat.

Pour voir le nombre de comptes utilisateurs pour lesquels il n'y a jamais eu la moindre connexion :
SELECT COUNT(1) FROM mdl_user WHERE lastlogin = currentlogin AND currentlogin=0;
Et pour les gens s'étant connecté une seule fois :
SELECT COUNT(1) FROM mdl_user WHERE lastlogin = currentlogin AND currentlogin !=0;
avec les détails :
SELECT DISTINCT currentlogin, FROM_UNIXTIME(currentlogin) AS Date
FROM mdl_user WHERE lastlogin = currentlogin AND currentlogin !=0;
Pour le reste, je ne suis pas certain de bien comprendre ce que tu veux dire par ton nombre d'utilisateurs...

Séverin
En réponse à Jean-François PETIT

Re: Nombre de connectés entre deux dates

par Christian Bocquet,
Avatar Moodleurs particulièrement utiles

Bonjour,

Votre requête fonctionne bien chez moi. Je dois simplement tenir compte du décalage horaire entre l'heure en France et l'heure du serveur.
Mais il ne faut pas qu'un utilisateur qui s'est connecté dans le créneau des 5 minutes se reconnecte plus tard, car son currentlogin changera et il ne sera plus compté.

Christian

En réponse à Christian Bocquet

Re: Nombre de connectés entre deux dates

par Séverin Terrier,
Avatar Documentation writers Avatar Moodleurs particulièrement utiles Avatar Testeurs Avatar Traducteurs
Voila !

Sinon, il faut plutôt baser les requêtes sur la table de journalisation (mdl_logstore_standard_log), en prenant soin de bien borner les dates pour ne pas trop surcharger la base de données avec des requêtes trop longues.

Séverin
Moyenne des évaluations Utile (1)
En réponse à Séverin Terrier

Re: Nombre de connectés entre deux dates

par Christian Bocquet,
Avatar Moodleurs particulièrement utiles

Bonjour Séverin,

Pour une liste des id des utilisateurs qui se sont connectés, ça pourrait être :

SELECT DISTINCT userid FROM `mdl_logstore_standard_log`
WHERE `action`='loggedin'
AND `timecreated` > UNIX_TIMESTAMP('2020-04-15 07:00:00')
AND `timecreated` < UNIX_TIMESTAMP('2020-04-15 08:00:00')
Ce qui correspond au créneau horaire 13h-14h pour moi.

Et pour les compter:

SELECT COUNT(userid) FROM 
(SELECT  DISTINCT userid FROM `mdl_logstore_standard_log`
WHERE `action`='loggedin'
AND `timecreated` > UNIX_TIMESTAMP('2020-04-15 07:00:00')
AND `timecreated` < UNIX_TIMESTAMP('2020-04-15 08:00:00'))
As TableUser

Christian