2011-11-18 5 views
1

J'ai une shoutbox qui est codée en PHP et Javascript et utilise MySQL. Il fonctionne comme ceci .. Nous avons un fichier refresh.txt qui vérifie les nouveaux cris, s'il y a un nouveau cri, il y a un appel à la base de données pour saisir les nouveaux cris. Maintenant que nous connaissons tous le problème principal avec shoutboxs est l'utilisation de l'unité centrale de traitement. Donc je me demandais s'il y avait un moyen de compter les utilisateurs actifs sans que cela ajoute trop de stress supplémentaire sur le serveur. Peut-être via Javascript?Shoutbox: Meilleure façon de compter les utilisateurs actifs

Malheureusement, je n'ai pas de code source à portée de main car il s'agit d'une nouvelle fonctionnalité ajoutée. Toute aide serait géniale, merci.

Répondre

1

Sont ces utilisateurs connectés avec une session de PHP? Si oui, entrez count the number of active session files dans le répertoire de sauvegarde de la session. Cela ne requiert pas beaucoup de ressources processeur et n'implique aucun appel de base de données. De plus, si vous évitez toujours les appels de base de données, vous pouvez avoir un fichier privé qui garde une trace des différents clients (par exemple, les adresses IP) et de la date à laquelle ils ont demandé une ressource au serveur. Plus d'informations à ce sujet in this question. Toutefois, si plusieurs utilisateurs visitent à partir du même réseau (par exemple des écoles ou des entreprises), vous avez une erreur logique et la solution consiste à consigner les utilisateurs individuels avec des cookies ou des sessions. Vous pouvez également être intéressé par long polling (Javascript). Il maintient une connexion ouverte avec le serveur et vérifie occasionnellement s'il y a de nouvelles données. Cela peut être utile pour compter le nombre d'utilisateurs actifs sans, per-se, sessions ou cookies.

+0

est une réponse très intéressante .. Je vais commencer à regarder ces options maintenant .. Nous n'avons pas un répertoire de sessions J'utilise SMF pour les forums .. pas 100% comment cela fonctionnerait .. Je pense que les sessions sont stockées dans la base de données. La solution idéale est de pouvoir obtenir une liste d'utilisateurs en ligne. La raison principale que je veux faire ceci est parce que les forum seulement magasin qui est en ligne dans les 15 dernières minutes .. Mais je sais qu'il y a beaucoup plus en ligne. Serait bon de voir qui est en ligne. –

+1

Le nombre d'utilisateurs en ligne (et d'invités) de Simple Machine est assez précis d'après mon expérience. Si vous voulez toujours le vôtre, je peux raconter. Pour un site web familial, j'ai construit une fonction shoutbox fonctionnant avec AJAX, à partir de zéro (avec jQuery). S'il n'y avait qu'un seul utilisateur en ligne, il n'a pas été interrogé du tout, ce qui a permis d'économiser des ressources. Plus il y avait d'utilisateurs en ligne, plus il était interrogé (jamais plus souvent que toutes les 10 secondes). Chaque fois qu'un utilisateur chargeait une page, il mettait à jour son dernier temps d'activité dans une base de données. J'ai trouvé cela efficace pour les petits projets. J'ai beaucoup appris aussi. – Matt

1

Il suffit d'avoir un compteur d'activité. Comptez seulement ceux qui étaient actifs dans les 4 dernières minutes. Ensuite, utilisez JS pour demander ce numéro toutes les 10 secondes à partir de votre serveur.

Sinon, je préférerais utiliser un produit 3ème partie comme http://www.shoutmix.com

+0

J'aime cette réponse aussi. Faites un appel toutes les 4 minutes et affichez-le dans une liste en ligne. Sons viable et ne serait pas si intense. J'utilise SMF pour que je puisse utiliser le SSI et appeler le who_is qui les enregistrerait alors en ligne .. Alors j'aurais toujours besoin d'un compteur de statistiques dans JS pour que le nombre réel en ligne dans la shoutbox soit affiché. –

Questions connexes