Statistiques allégées pour votre blog WordPress

Lorsque l’on possède un petit blog WordPress, que l’on héberge soi-même, on a parfois envie de savoir si celui-ci a du succès. Au moins un petit peu.
Voilà donc un billet avec des billes pour ceux qui cherchent une solution très simple et légère pour le suivi des visiteurs.
Evidemment, cela s’adresse à des développeurs et non pas à des utilisateurs finals (non, non, il n’y a pas de faute de français).

Il y a plusieurs solutions disponibles.
La plus connue est Google Analytics. Vous avez aussi Xiti, getClicky… Et il y en a plein d’autres.
L’inconvénient de ces solutions est l’utilisation qu’elles peuvent faire de vos données, que ce soient celles qui remontent de votre site sur vos visiteurs, comme vos informations personnelles.

Il existe aussi des solutions personnelles.
Piwik est la référence dans ce domaine. Piwik est le successeur de phpMyVisites. Sauf que Piwik est super gourmand en base de données. Et mon hébergement chez OVH, avec une base de 25 Mo, ne tiendrait pas deux semaines. Vous pouvez aussi vous tourner vers des plug-ins WordPress de statistiques. Il y en a plein, avec une multitude d’options.  Mais ils mettent tous les informations en base de données. Grosso-modo, ça revient au même. Et il y a aussi JetPack, que vient de sortir WordPress, mais qui est accompagné de plein (trop ?) de choses.

Pour mon hébergement, j’ai une BD de 25 Mo et un espace de 25 Go.
Clairement, si je dois stocker des informations sur des stats, ce sera de préférence sur le disque et pas dans la BD.
De plus, je n’ai pas besoin de 50 000 informations. Que mes visiteurs viennent de l’Ardèche ou d’Australie, je m’en fiche.

En fait, tout ce dont j’ai besoin, c’est de pouvoir compter grossièrement les visites et de savoir sur quelle page mes visiteurs sont arrivés et qui les a envoyés sur cette page. Ce sont donc des besoins très restreints. En fait, l’objectif n’est pas d’avoir les données les plus fiables possibles (c’est un site personnel), mais de connaitre des tendances à propos des visites que vous recevez.

Voilà le code d’un plug-in WordPress qui permet de logguer quelques informations sur vos visiteurs.
Voilà le principe : quand un visiteur vient, on récupère un cookie laissé lors de la précédente visite. Si ce cookie n’existe pas, ou s’il est daté d’un jour avant aujourd’hui, alors on considère ça comme une nouvelle visite. On va alors stocker des informations sur cette visite dans un fichier. Et chaque mois, on changera de fichier pour écrire. Bien sûr, après tout ça, on créé ou met à jour le cookie du visiteur.

<?php
/*
Plugin Name: VZ's Incoming Stats
Description: A plug-in to track incoming visitors, using files to store tracking information.
Version: 1.0
Author: VZ
License: GPL2
*/

/**
 * Must end with a slash.
 */
define( "VZ_INCOMING_STATS_LOG", "/stats/" );

/**
  * Tracks a visit, when possible.
  */
function vz_track_visit() {

	$seconds_per_day = 3600 * 24;
	$time = time();
	$current_time = date( "jj-mm-yyyy", $time );

	// Should we track this visit?
	$new_user = false;
	if( isset( $_COOKIE[ 'last_visit' ] )) {
		$last_time = date( "jj-mm-yyyy", $_COOKIE[ 'last_visit' ]);
		$new_user = strcmp( $last_time, $current_time ) != 0;
	}
	else {
		$new_user = true;
	}

	// Track this visit
	if( $new_user )
		vz_track_this_visit( $time );

	// Eventually, set or update the cookie
	setcookie( "last_visit", $time, $time + $seconds_per_day, COOKIEPATH, COOKIE_DOMAIN );
}

/**
  * Logs information from this user.
  * @param time the visit time, as a timestamp
  */
function vz_track_this_visit( $time ) {

	// Prepare the data to write
	$data = "\nvisit-time = $time \nincoming-page = " . $_SERVER[ 'REQUEST_URI' ];
	if( isset( $_SERVER[ 'HTTP_REFERER' ] ))
		$data .= "\nreferrer = " . $_SERVER[ 'HTTP_REFERER' ];

	// Find the log file
	$file = $_SERVER[ 'DOCUMENT_ROOT' ];
	if( strcmp( substr( $file, -1 ), "/" ) != 0
			&& strcmp( substr( VZ_INCOMING_STATS_LOG, 0, 1 ), "/" ) != 0 )
		$file .= "/";
	$file .= VZ_INCOMING_STATS_LOG . date( "m-Y", $time ) . ".txt";

	// Lock the log file
	$fp = fopen( $file, "a" );
	if( $fp ) {
		if( flock( $fp, LOCK_EX )) {

			// Write in the log file
			fwrite( $fp, $data );

			// Unlock the log file
			flock( $fp, LOCK_UN );
		}
		else {
			// Nothing. "C'est la vie..."
			// To use for debug purpose only.
			// echo "The log file could not be locked.";
		}

		fclose( $fp );
	}
}

?>

Le code est très simple. Les fichiers créés sont lisibles sans outil, mais on peut aussi créer des parseurs et ainsi afficher ça dans le panneau d’administration par exemple.

Bien sûr, il reste des limitations : les cookies peuvent ne pas être acceptés et les referrer peuvent être faux ou même vides. Il se peut aussi qu’un même visiteur vienne avec différents navigateurs (même adresse IP).
Mais encore une fois, cela sert à avoir des tendances. Et cela suffit à avoir une petite idée sur la fréquentation de son site. En ce qui me concerne en tout cas, la marge d’erreur est plus qu’acceptable. C’est à un niveau au-dessus des compteurs de visites, mais bien en-dessous d’un GA. Sans contrainte en tout cas.

Publicités

About this entry