On fait donc un compromis : par defaut on affiche que les 90 derniers jours comme avant, avec un unique lien qui permet d'afficher tout l'historique jour, tous les zooms intermediaires n'ayant aucun interet
Par rapport a avant, on preserve donc la rapidite de la page par defaut, on simplifie l'interface, et on accede facilement a l'historique complet
On supprime donc le double systeme de zoom URL + JS en laissant uniquement le zoom JS : par defaut le graphe jour est zoome sur les 90 derniers jours, mais il suffit de double-clicker pour avoir tout l'historique, que l'on peut zoomer/dezoomer par selection a la souris dans le graphe
on note son IP dans le dossier tmp/flood/
Au bout de 24H (redefinissable via la constante _IP_FLOOD_TTL) on la supprime de tmp/flood/
Ces IP reperees peuvent ensuite etre considerees comme des BOT ou meme kickee temporairement, au choix, action a ajouter dans le mes_options.php par exemple
1) nettoyage
Permet de supprimer toutes les lignes de spip_referers_articles ou spip_visites_articles qui n'appartiennent pas à un article existant dans spip_articles.
(ça c'est simple)
2) archivage
Permet de concaténer les lignes de spip_visites_articles pour qu'elles occupent moins de place en base de données.
Par défaut, SPIP regroupe les données par jour/article/visites.
On permet, pour les vieilles entrées, de regrouper par mois ou par année. Le total est alors stocké dans le 1er jour du mois ou de l'année.
Par défaut, via les constantes STATISTIQUES_ARCHIVER_PAR_MOIS (valant 2) et STATISTIQUES_ARCHIVER_PAR_AN (valant 5), on concatène :
- par mois ce qui a plus de 2 ans
- par année ce qui a plus de 5 ans
De la sorte, par exemple pour ce qui a plus de 5 ans, au lieu d'avoir une entrée par article et par jour, nous obtenons une entrée par article et par an,
ce qui diminue considérablement le nombre de lignes de spip_visites_articles, sans perte des totaux de chaque article.
Dans la base qui a servi de test, cela passe de 12.5 millions d'entrées (de 2005 à aujourd'hui) à 1.2 millions. C'est encore beaucoup, mais c'est bien moins !
On utilise number_format pour forcer le point comme séparateur des décimales car suivant la config serveur round peut retourner un nombre utilisant la virgule comme séparateur cf http://fr2.php.net/manual/fr/function.round.php#80375