Comment utiliser les websocket pour avoir des statistiques en temps réel

Avatar du membre
Mammouth du PHP | 1442 Messages

20 sept. 2023, 16:25

Je souhaite afficher le nombre de connectés sur mon site internet, j'ai un hébergement OVH avec Node.js 8, 10, 11 inclus.

J'ai aucune connaissance avec Node.js, d'après quelques tutos, les websocket s'utilisent avec Node.js.

Merci pour votre aide.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9626 Messages

20 sept. 2023, 17:03

Sans node.js ni websocket, tu mets simplement un appel ajax toutes les 30 secondes sur toutes tes pages avec un cookie de session pour identifier chaque visites.
Cet appel ajax se fait sur un script PHP, qui va ajouter/mettre à jour une table SQL qui contient une ligne par ID de session et le timestamp de dernière activité (càd la date et heure courante)

Ensuite quand tu veux connaitre le nombre d'utilisateurs connectés sur ton site, tu as juste à faire un SELECT sur cette table des timestamp < timestamp+30s.

Et bien sûr pour ne pas que ta table SQL explose en taille, tu fais un DELETE des sessions expirées
Quand tout le reste a échoué, lisez le mode d'emploi...

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9626 Messages

20 sept. 2023, 17:12

A noter que pour alléger ton serveur si tu n'as pas besoin d'avoir une précision importante sur le nombre d'utilisateurs actifs en simultanés, l'autre approche est de ne pas faire de l'ajax mais uniquement au chargement de chaque page mettre à jour la table id de session/timestamp
Et considérer que les utilisateurs actifs sont ceux qui ont chargé au moins une page dans la dernière demi-heure.

30 minutes d'inactivité, c'est le standard, c'est par exemple ce que considère Google Analytics pour considérer une session comme inactive.
Quand tout le reste a échoué, lisez le mode d'emploi...

Avatar du membre
Mammouth du PHP | 1442 Messages

20 sept. 2023, 18:10

Je souhaite vraiment utiliser websocket pour ce TP et me faire la main car je souhaite faire autre chose avec les websocket plus tard.

Mon site est une application "one page" où l'utilisateur ne charge qu'une fois l'application puis des appels AJAX se font déjà toutes les X secondes, je souhaite oublié cette méthode et passer aux websockets pour envoyer des infos aux utilisateurs en temps réel.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9626 Messages

21 sept. 2023, 09:11

Du coup, si tu veux le faire en Node.JS, pas sûr que PHPfrance soit le forum le + adapté pour t'aider dans ce TP :D

En PHP+websocket, voici une piste : https://c-mh.fr/posts/websockets-en-php ... n-y-parait
Quand tout le reste a échoué, lisez le mode d'emploi...

Avatar du membre
Mammouth du PHP | 1442 Messages

21 sept. 2023, 09:16

Merci pour tes réponses, je regarderai dans la journée ;)