cs_Julien39
Messages postés6414Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention29 juillet 2020
-
27 juin 2012 à 14:38
floflode69
Messages postés24Date d'inscriptionlundi 9 juillet 2012StatutMembreDernière intervention20 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.
floflode69
Messages postés24Date d'inscriptionlundi 9 juillet 2012StatutMembreDernière intervention20 août 2014 9 juil. 2012 à 14:28
il est bien
youkc
Messages postés46Date d'inscriptionlundi 14 mars 2011StatutMembreDernière intervention15 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és380Date d'inscriptionsamedi 18 décembre 2004StatutMembreDernière intervention29 octobre 202311 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és6414Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention29 juillet 2020371 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és46Date d'inscriptionlundi 14 mars 2011StatutMembreDernière intervention15 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és380Date d'inscriptionsamedi 18 décembre 2004StatutMembreDernière intervention29 octobre 202311 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és43Date d'inscriptionlundi 3 octobre 2011StatutMembreDernière intervention26 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és14Date d'inscriptionmercredi 27 octobre 2010StatutMembreDernière intervention27 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és6414Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention29 juillet 2020371 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...
9 juil. 2012 à 14:28
29 juin 2012 à 20:00
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 !
29 juin 2012 à 14:12
@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.
28 juin 2012 à 23:17
@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.
28 juin 2012 à 11:24
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."
28 juin 2012 à 09:06
28 juin 2012 à 00:39
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 =)
27 juin 2012 à 17:29
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. :-/
27 juin 2012 à 14:38
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...