Piwik : réduire le volume des tables

Piwik est un script Php qui constitue une réelle alternative à Google Analytics. Il exige toutefois que vous disposiez d’un base MySQL.

Il stocke les données de présentation de vos données statistiques dans des tables qui peuvent très vite occuper plusieurs dizaines de Mo. Voici un hack pour diminuer la croissance des tables d’archive piwik_archive !

Le script Php

<?php
$db=’votre_base_de_données_piwik';
$host=’localhost';
$login=’root';
$pwd=’votre_mot_de_passe';
$conn=mysql_connect($host, $login,$pwd);
$sql = « SHOW TABLES FROM $db »;
$req = mysql_query($sql);
mysql_select_db($db,$conn);
while ($row = mysql_fetch_row($req))
{
if(stripos($row[0],’piwik_archive_’)!==false)
{
$trunc=mysql_query(‘TRUNCATE TABLE ‘.$db.’.’.$row[0]);
mysql_free_result($trunc);
unset($trunc);
}
else
{
$opt=mysql_query(‘OPTIMIZE TABLE ‘.$db.’.’.$row[0]);
mysql_free_result($opt);
unset($opt);
}
}
mysql_free_result($req);
unset($req);
mysql_close($conn);
unset($conn);
?>

Vous pouvez exécuter ce script par une tâche planifiée, après avoir installé le paquet php-cli, par la commande php -f nom_du_script.php.

Eclairage complémentaire : le schéma utilisé par Piwik

Dsfc Dsfc

Piwik : réduire le volume des tables
0 votes, 0.00 avg. rating (0% score)
Tags : , , , , , , ,
Commentaires

Salut,
Je découvre un peu Piwik (en prod depuis hier) et vu qu’on m’a parlé du volume de la base, je suis tombé ici.
Merci pour l’astuce (le schéma est très parlant), je vais peut-être l’adapter un peu pour droper certaines tables (au lieu de les truncate), par exemple celles vieilles de plus d’un an.

Oui, il faut régulièrement nettoyer les archives qui gonflent vite. C’est un excellent produit. Quand on est en mode dédié, je préfère Awstats qui ne laissent rien passer du fait qu’il calcule à partir des logs du serveurs Apache.

Bonjour,

Votre sujet m’intéresse grandement.
J’ai copié le script dans un fichier cleanbdd.php
je l’ai copié à la racine de mon site, puis je l’ai lancé
mais le site me renvoie cette erreur :
Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in /homez.xxx/xxxxxx/www/cleanbdd.php on line 15

Et je n’ai d’ailleurs pas compris la notion d’installation du paquet php-cli avec la commande php-f nom_du_script.php
Je ne sais pas où je dois taper cette commande.

Merci de votre éclairage!

Laisser un commentaire

(requis)

(requis)


*