[ Index ] |
|
Code source de SPIP 1.8.3 |
1 <?php 2 3 /***************************************************************************\ 4 * SPIP, Systeme de publication pour l'internet * 5 * * 6 * Copyright (c) 2001-2005 * 7 * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * 8 * * 9 * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * 10 * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * 11 \***************************************************************************/ 12 13 14 // Ce fichier ne sera execute qu'une fois 15 if (defined("_ECRIRE_INC_VISITES")) return; 16 define("_ECRIRE_INC_VISITES", "1"); 17 18 function calculer_visites() { 19 20 // La date des enregistrements de spip_visites_temp correspond a la veille 21 // du calcul. 22 $hier = date("Y-m-d", time() - 24*3600); 23 24 // Sur tout le site, nombre de visiteurs uniques pendant la periode 25 // qui precede (normalement, une journee) 26 $query = "SELECT COUNT(DISTINCT ip) AS total_visites FROM spip_visites_temp"; 27 $result = spip_query($query); 28 if ($row = @spip_fetch_array($result)) 29 $total_visites = $row['total_visites']; 30 else 31 $total_visites = 0; 32 spip_query("INSERT IGNORE INTO spip_visites 33 (date, visites) VALUES ('$hier', 0)"); 34 spip_query("UPDATE spip_visites SET visites = visites+$total_visites 35 WHERE date='$hier'"); 36 37 // Nombre de visiteurs uniques par article 38 $query = "SELECT COUNT(DISTINCT ip) AS visites, id_objet 39 FROM spip_visites_temp WHERE type='article' GROUP BY id_objet"; 40 $result = spip_query($query); 41 42 $visites_insert = array(); 43 $visites_update = array(); 44 45 while ($row = @spip_fetch_array($result)) { 46 $id_article = $row['id_objet']; 47 $visites = $row['visites']; 48 $visites_update[$visites][] = $id_article; 49 } 50 51 $query_effacer = "DELETE FROM spip_visites_temp"; 52 $result_effacer = spip_query($query_effacer); 53 54 // Mise a jour de la base 55 foreach ($visites_update as $visites => $articles) { 56 // Augmenter les stats totales des articles 57 spip_query("UPDATE spip_articles SET maj=maj, 58 visites = visites + $visites 59 WHERE id_article IN (".join(',', $articles).")"); 60 // Inserer des visites pour la journee (si pas deja fait) 61 $insert = "('$hier',0,". join ("),('$hier',0,", $articles) . ')'; 62 spip_query("INSERT IGNORE INTO spip_visites_articles 63 (date, visites, id_article) VALUES $insert"); 64 // Augmenter les stats des visites de la journee 65 spip_query("UPDATE spip_visites_articles 66 SET visites=visites+$visites WHERE date='$hier' 67 AND id_article IN (".join(',', $articles).")"); 68 } 69 70 // Une fois par jour purger les referers du jour ; qui deviennent 71 // donc ceux de la veille ; au passage on stocke une date_statistiques 72 // dans spip_meta - cela permet au code d'etre "reentrant", ie ce cron 73 // peut etre appele par deux bases SPIP ne partageant pas le meme 74 // _DIR_SESSIONS, sans tout casser... 75 $aujourdhui = date("Y-m-d"); 76 if ($date_referers = lire_meta('date_statistiques') 77 AND $date_referers != $aujourdhui) { 78 spip_query("UPDATE spip_referers SET visites_veille=visites_jour, visites_jour=0"); 79 } 80 ecrire_meta('date_statistiques', $aujourdhui); 81 ecrire_metas(); 82 return 1; 83 } 84 85 ?>
titre
Description
Corps
titre
Description
Corps
titre
Description
Corps
titre
Corps
Généré le : Thu Feb 22 22:27:47 2007 | par Balluche grâce à PHPXref 0.7 |