2011-03-21 4 views
0

Je veux compter les visites sur chaque page du site et de détecter qui est en lignevisiteurs PHP MySQL meilleure façon de compter et de détecter

Ma solution


Table

pour toutes les sessions de visiteurs

----------------------------------------------- 
|id | sessionid | last_active | member_id | ip| 
----------------------------------------------- 

la member_id est -1 pour les membres none et l'identificateur de membre de mebers

une autre table pour chaque clic pour sessionid unique,

---------------------------------- 
|id | sessionid | url| visit_date| 
---------------------------------- 

et le site total de visiteurs est les lignes de la table de sessions comptent et chaque visite de page compte est le nombre de lignes où l'url de cette page


  1. l'URL peut avoir un problème si nous faisons une opération sur la page [ajouter des commentaires ...] l'URL va changer et une nouvelle visite est insérée !!! dois-je utiliser l'identifiant de la page?
  2. après des années pour un site Web commun la table des sessions sera bondée que pouvons-nous faire? devons-nous le nettoyer périodiquement, mais qu'arrivera-t-il au nombre total ou à ce qui n'est pas important? aussi la table des visites sera-t-elle encombrée cela affectera-t-il la performance? que puis-je faire d'autre?

OK c'est ma solution et mes questions est ce que vos suggestions et améliorations?

Répondre

0

Les sessions PHP expirent, tout comme les données de votre table. Vous pouvez probablement vous connecter au gestionnaire de garbage collector/close de la session pour expirer les données de votre table.

Ou utilisez des sessions basées sur la base de données et unifiez vos sessions et vos données de membres en ligne en un seul endroit. C'est la meilleure solution, IMO, tant que vous n'avez pas affaire à d'énormes quantités de trafic.

+0

La session basée sur la base de données ne pose aucun problème, mais les analyses du site seront détruites lors de la destruction de la session. Quelle est l'alternative? – ahmedsafan86

+0

La fonction de nettoyage de session par défaut n'a pas de hook disponible (malheureusement, il semble que cela aurait été une bonne idée d'en avoir). - mais vous pouvez rouler votre propre complexe de gestion de session –

Questions connexes