Aller au contenu

Méthode de compteur pour des blogs?


godferthomy

Sujets conseillés

Salut tout le monde!

Voilà je suis depuis 2petits mois sur un projet de blogs, quand j'ai le temps à coté des études.

J'ai implémenté la plupart de mes objectifs, mais étant donné qu'il est ouvert et que des amis y ont créé un blog, j'aimerais leur fournir des statistiques de mesure des visites.

Seulement je ne sais pas du tout comment m'y prendre, je ne suis pas un expert du traitement de fichier et j'ai l'impression qu'en MySQL ce serait un peu lourd..

Mon objectif serait d'avoir les visites des 7 derniers jours, et les visites par mois, pour chaque blog.

Chaque "blog" est dans un dossier à son nom. Le dossier contient en fait un fichier qui fait appel à un fichier à la racine et génère ensuite tout le blog, en parallèle avec des infos sur la base de données.

En gros si vous voulez voir.. http://lolblogs.free.fr

Les blogs seront alors.. -http://lolblogs.free.fr/unblog/, -http://lolblogs.free.fr/unautreblog/

etc..

Je ne sais vraiment pas comment m'y prendre pour gérer les visites par blog. Si vous pouviez m'aider.. :)

PS : si il y a des curieux, je ne suis pas sûr que tout soit à la norme W3C, j'ai dû récemment faire des bêtises sans vérifier.. :)

Merci d'avance à tous!

Lien vers le commentaire
Partager sur d’autres sites

Bonjour 'godferthomy',

Et bienvenue sur Webmaster-HUB :) => c'est ton 1er post...

Je ne suis pas un pro du développement et des blogs, mais une fois, j'étais tombé sur www.mybloglog.com qui permet, semble t-il, de compter les clics entrant et sortant d'un blog... J'en avais parlé dans ce post : Connaissez-vous mybloglog? et tu peux trouver quelques infos, là : MyBlogLog.com, pistez vos clics...

A toi de voir, si cela corresponds à ton attente...

Lien vers le commentaire
Partager sur d’autres sites

Merci pour l'accueil :blush:

Mon objectif étant de tout créer moi-même (en fait c'est plus un défi technique personnel à la base ces blogs), il est vrai que je préfèrerais la manière PHP sur mon site.

Cependant je vais bien sûr consulter tous ces sites, les contenus ont l'air intéressant, reste à savoir s'il est facile de mesurer le trafic par blog (donc par dossier).

Aussi merci pour les infos donc :)

Je vous dirais ce que j'ai testé et ce qui a marché (si quelque chose marche bien :P )

Lien vers le commentaire
Partager sur d’autres sites

Ah oui j'en profite au passage pour poser une petite question hors-sujet mais ça évitera un sujet pour pas grand chose.. :)

en fait c'est avec les retours à la ligne selon le système d'exploitation du serveur.

Dans mes souvenirs c'est \r\n sous windows, \n sous linux et \r sous UNIX. Bref peu importe. Y a-t-il un moyen de régler le problème de comptabilité entre les serveurs? Parce que je conçois avec un serveur local sous windows pour uploader sur un serveur linux et c'est pas très pratique à chaque fois..

Lien vers le commentaire
Partager sur d’autres sites

Bon je me suis senti l'âme d'un guerrier alors j'ai pondu mon propre truc, qui devrait me suffir, n'ayant pas trouvé mon bonheur sur les sites.

Donc voilà ce que j'ai fais:


<?
function incremente_tot($content) {
if (preg_match("/total\: (.*?)\;/si",$content,$match)) {
$content=preg_replace("/total\: (.*?)\;/si","total: ".($match[1]+1).";",$content);
} else {
$content="total: 1;".$content;
}
return $content;
}

function incremente_mois($content,$time='') {
if (!$time) {$time=time();}
if (preg_match("/m".date('m\\\/y',$time)."\: (.*?)\;/si",$content,$match)) {
$content=preg_replace("/m".date('m\\\/y',$time)."\: (.*?)\;/si","m".date('m/y',$time).": ".($match[1]+1).";",$content);
} else {
$content=$content."\n\n"."m".date('m/y',$time).": 1;";
}
return $content;
}

function incremente_jour($content,$time='') {
if (!$time) {$time=time();}
if (preg_match("/".date('d\\\/m\\\/y',$time)."\: (.*?)\;/si",$content,$match)) {
$content=preg_replace("/".date('d\\\/m\\\/y',$time)."\: (.*?)\;/si","".date('d/m/y',$time).": ".($match[1]+1).";",$content);
} else {
$content=$content."\n".date('d/m/y',$time).": 1;";
}
return $content;
}

$fichier="visites.stat";
$inF = fopen($fichier,"r");
if (filesize($fichier)>0) {$content=fread($inF,filesize($fichier));} else {$content='';}
fclose($inF);
$time=time();
for ($i=0;$i<200;$i++) {
$time+=60*60*24;
for ($j=0;$j<rand(5,20);$j++) {
$content=incremente_tot($content);
$content=incremente_mois($content,$time);
$content=incremente_jour($content,$time);
}
}
$inF = fopen($fichier,"w+");
fwrite($inF,$content);
fclose($inF);

Voilà c'est surement lourd mais ça s'exécute en 1 demi seconde.. après il y a surement de quoi optimiser.

J'attends vos conseils. :) y a-t-il quelque chose de bon dans tout ça?

C'est juste pour l'écriture, j'ai pas encore fait de quoi lire le résultat.

Le résultat ici: http://lolblogs.free.fr/visites.stat

Youpi ça avait pas envoyé en début d'aprèm :) (je raconte ma vie!! :) )

Lien vers le commentaire
Partager sur d’autres sites

Arf désolé.. je postes encore, j'ai pas trouvé de bouton pour éditer :blush:

Voilà ma version "finale" (là s'arrêtent mes connaissances en traitement de chaines et de fichiers).

Le résultat est disponible à l'adresse suivante: http://lolblogs.free.fr/visites.stat

Quant à l'incrémentation, je ne l'ai pas implémentée encore, elle se fait ici: http://lolblogs.free.fr/test2.php


function incremente_total($content) {
if (preg_match("/total\: (.*?)\;/si",$content,$match)) {
$content=preg_replace("/total\: (.*?)\;/si","total: ".($match[1]+1).";",$content);
} else {
$content="total: 1;".$content;
}
return $content;
}

function incremente_annee($content,$time='') {
if (!$time) {$time=time();}
if (preg_match("/année ".date('Y',$time)."\: (.*?)\;/si",$content,$match)) {
$content=preg_replace("/année ".date('Y',$time)."\: (.*?)\;/si","année ".date('Y',$time).": ".($match[1]+1).";",$content);
} else {
$content=$content."\n\n\n"."### année ".date('Y',$time).": 1; ###";
}
return $content;
}

function incremente_mois($content,$time='') {
if (!$time) {$time=time();}
if (preg_match("/mois ".date('m\\\/y',$time)."\: (.*?)\;/si",$content,$match)) {
$content=preg_replace("/mois ".date('m\\\/y',$time)."\: (.*?)\;/si","mois ".date('m/y',$time).": ".($match[1]+1).";",$content);
} else {
$content=$content."\n\n"."*** mois ".date('m/y',$time).": 1; ***";
}
return $content;
}

function incremente_jour($content,$time='') {
if (!$time) {$time=time();}
if (preg_match("/".date('d\\\/m\\\/y',$time)."\: (.*?)\;/si",$content,$match)) {
$content=preg_replace("/".date('d\\\/m\\\/y',$time)."\: (.*?)\;/si","".date('d/m/y',$time).": ".($match[1]+1).";",$content);
} else {
$content=$content."\n".date('d/m/y',$time).": 1;";
}
return $content;
}

function ajout_compteur($time='') {
if (!$time) {$time=time();}

$fichier="visites.stat";
$inF = fopen($fichier,"r");
if (filesize($fichier)>0) {$content=fread($inF,filesize($fichier));} else {$content='';}
fclose($inF);

$content=incremente_total($content);
$content=incremente_annee($content,$time);
$content=incremente_mois($content,$time);
$content=incremente_jour($content,$time);

$inF = fopen($fichier,"w+");
fwrite($inF,$content);
fclose($inF);
}

function verif_visite() {
if(is_null($_COOKIE['visite'])) {
setcookie("visite","ok");
ajout_compteur();
return FALSE;
} else {
return TRUE;
}
}

Voilà je retiendrais mes ardeurs pour la suite, j'attendrais des réponses avant de reposter.

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...