Jump to content
Sign in to follow this  
godferthomy

Méthode de compteur pour des blogs?

Rate this topic

Recommended Posts

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!

Share this post


Link to post
Share on other sites

En solutions externes, il y a performancing.com qui est très bien et gratuit, mais ce n'est peut être pas ce que tu cherches ?

Share this post


Link to post
Share on other 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...

Share this post


Link to post
Share on other 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 )

Share this post


Link to post
Share on other 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..

Share this post


Link to post
Share on other sites

Bonjour,

Fais tes uploads avec FTP en mode ASCII et ce sera FTP qui s'occupera de faire toutes les convertions nécessaires pour les fins de ligne.

Jean-Luc

Share this post


Link to post
Share on other 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!! :) )

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...