COMPTEUR DE VISITE 2 EN 1 SANS BD

cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 - 27 juin 2012 à 14:38
floflode69 Messages postés 24 Date d'inscription lundi 9 juillet 2012 Statut Membre Dernière intervention 20 août 2014 - 9 juil. 2012 à 14:28
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/54415-compteur-de-visite-2-en-1-sans-bd

floflode69 Messages postés 24 Date d'inscription lundi 9 juillet 2012 Statut Membre Dernière intervention 20 août 2014
9 juil. 2012 à 14:28
il est bien
youkc Messages postés 46 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 15 août 2012
29 juin 2012 à 20:00
@PLG10: c'est bien !

moi on avait demandé de faire un compteur de visites par @IP et les enregistrer dans une base de donnés mais arrivé a plus de 1000 visites ça commence a surcharger la base et j'ai pensé a faire avec les fichiers.

comme tu as mis ça en deux fichier et faire éventuellement quelque modifications je croix que ça serai intéressant que tu poste ça comme la version 2 de ce code.
Merci !
pgl10 Messages postés 380 Date d'inscription samedi 18 décembre 2004 Statut Membre Dernière intervention 29 octobre 2023 11
29 juin 2012 à 14:12
@Julien39 : Tout à fait d'accord avec ton commentaire bien justifié. Le risque de plusieurs visiteurs ayant la même adresse IP est faible mais quand cela arrive c'est une erreur que je ne sais pas traiter et que j'admets faute de mieux. Et pour limiter les calculs je n'affiche les statistiques de visites qu'à la demande et non pas systématiquement. Ma solution est davantage orientée vers la géolocalisation des visiteurs, ce qui est maintenant chose faite.
@Youkc : j'aime bien cette solution qui compte le nombre de "visiteurs-sessions". Si le même visiteur visite plusieurs pages dans la même session cela compte pour une seule visite, mais s'il revient dans dans une autre session cela compte pour une nouvelle visite. C'est un décompte qui conviendra assez souvent pour beaucoup d'utilisateurs. A noter que j'ai remplacé dans ma copie les : fseek($compteur_f, 1); par : fseek($compteur_f, 0); et que j'ai remplacé pour moi le fichier compteur.php par deux fichiers : compteur.php sans aucun affichage et afficheur.php pour afficher les nombres de visiteurs-sessions où je veux dans la page visitée. En résumé : j'aime bien cette solution pour les cas prévus avec les conditions d'emploi déjà énoncées. L'absence de BD est un avantage intéressant.
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
28 juin 2012 à 23:17
@youkc : C'est une erreur assez classique que font bon nombre de débutants, rassure toi, tu n'es pas le seul. Il n'est pas toujours évident d'imaginer ton application en mode multi-utilisateurs.

@pgl10 : oui, avec un fichier par utilisateur, on règle en partie le problème des accès concurrents, en effet, même avec un fichier par adresse IP, tu n'es pas a l'abri de tomber sur plusieurs utilisateurs qui utilisent un même proxy, mais ça vrai que malgré tout, ca limite quand même grandement le risque. Par contre, ça devient vraiment lourd à gérer et tu es obligé de faire beaucoup d'I/O pour calculer le nombre total de visites.
youkc Messages postés 46 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 15 août 2012
28 juin 2012 à 11:24
Salut !

Merci pour vos remarques et suggestions.
PunKeel merci pour ces fonctions .
Julien39 j'ai pas pensé aux accès concurrents ce qui peut fausser le calcul.

('-_-') : "Qui ne sait pas trouvera à apprendre."
pgl10 Messages postés 380 Date d'inscription samedi 18 décembre 2004 Statut Membre Dernière intervention 29 octobre 2023 11
28 juin 2012 à 09:06
Avec des hypothèses arbitraires, et donc contestables, on peut se passer d'une BD, au moins dans certains cas. La solution http://www.phpcs.com/code.aspx?ID=51885 comporte un fichier par visiteur, il n'y a donc jamais d'ouvertures simultanées. Mais, même en l'adaptant, cela convient seulement pour un site ayant un petit nombre de visiteurs.
PunKeel Messages postés 43 Date d'inscription lundi 3 octobre 2011 Statut Membre Dernière intervention 26 février 2014
28 juin 2012 à 00:39
Utiliser un stockage style total|date_du_jour|aujourd'hui permet de n'utiliser qu'un seul fichier. ( quoique pour des stats un fichier par jour, c'est bien aussi :), mais les lignes 6 à 9 vont contre cette idée)
Cette source n'est pas unique

$hier = date('d-m-y', time() - 3600 * 24); // détermination de la date d'hier -> date('d-m-y', strtotime("-1 days"));

Fonctions sur les fichiers : file_get_contents et file_put_contents c'est "mieux" je crois ;)
Tu ne fais pas de "flock" d'ailleurs, donc si t'as deux visiteurs en même temps, tu perds tout :/

Cordialement(, et gentiment), PunKeel =)
Reldan Messages postés 14 Date d'inscription mercredi 27 octobre 2010 Statut Membre Dernière intervention 27 mai 2013
27 juin 2012 à 17:29
Effectivement je ne vois pas comment faire sans BD , meme si tu lockes le fichier tu vas perdre des hits ou alors tu ouvres d'autres fichiers pour spooler mais ça risque d'être casse-gueule.
Ah si ! => Fichier + memcache ça peut le faire. mais ton code va être beaucoup plus lourd qu'avec une BDD.
A la rigueur ça peut se justifier si tu as vraiment trop de charge sur ton serveur BDD et pas moyen de level up mais dans ce cas ça serait plutôt de l'optim sur les reste de tes accès base qu'il faudrait faire.
Donc non au final je ne vois pas trop l’intérêt. :-/
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
27 juin 2012 à 14:38
Salut,

Si on utilise une base de données pour ce genre de programme, ce n'est pas pour rien. As-tu pensé aux accès concurrents ? Manifestement non...
Rejoignez-nous