[ Index ] |
|
Code source de SPIP 1.9.2c |
1 <?php 2 3 /***************************************************************************\ 4 * SPIP, Systeme de publication pour l'internet * 5 * * 6 * Copyright (c) 2001-2007 * 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 if (!defined("_ECRIRE_INC_VERSION")) return; 15 16 17 // 18 // Popularite, modele logarithmique 19 // 20 21 // http://doc.spip.org/@calculer_popularites 22 function calculer_popularites() { 23 24 // Si c'est le premier appel, ne pas calculer 25 $t = $GLOBALS['meta']['date_popularites']; 26 ecrire_meta('date_popularites', time()); 27 ecrire_metas(); 28 if (!$t) 29 return; 30 31 $duree = time() - $t; 32 // duree de demi-vie d'une visite dans le calcul de la popularite (en jours) 33 $demivie = 1; 34 // periode de reference en jours 35 $periode = 1; 36 // $a est le coefficient d'amortissement depuis la derniere mesure 37 $a = pow(2, - $duree / ($demivie * 24 * 3600)); 38 // $b est la constante multiplicative permettant d'avoir 39 // une visite par jour (periode de reference) = un point de popularite 40 // (en regime stationnaire) 41 // or, magie des maths, ca vaut log(2) * duree journee/demi-vie 42 // si la demi-vie n'est pas trop proche de la seconde ;) 43 $b = log(2) * $periode / $demivie; 44 45 // oublier un peu le passe 46 spip_query("UPDATE spip_articles SET maj=maj, popularite = popularite * $a"); 47 48 // enregistrer les metas... 49 $row = spip_fetch_array(spip_query("SELECT MAX(popularite) AS max, SUM(popularite) AS tot FROM spip_articles")); 50 ecrire_meta("popularite_max", $row['max']); 51 ecrire_meta("popularite_total", $row['tot']); 52 53 54 // Une fois par jour purger les referers du jour ; qui deviennent 55 // donc ceux de la veille ; au passage on stocke une date_statistiques 56 // dans spip_meta - cela permet au code d'etre "reentrant", ie ce cron 57 // peut etre appele par deux bases SPIP ne partageant pas le meme 58 // _DIR_TMP, sans tout casser... 59 $aujourdhui = date("Y-m-d"); 60 if ($date = $GLOBALS['meta']['date_statistiques'] 61 AND $date != $aujourdhui) 62 spip_query("UPDATE spip_referers SET visites_veille=visites_jour, visites_jour=0"); 63 ecrire_meta('date_statistiques', $aujourdhui); 64 65 // et c'est fini pour cette fois-ci 66 ecrire_metas(); 67 return 1; 68 69 } 70 71 // 72 // Applique la regle de decroissance des popularites 73 // 74 // http://doc.spip.org/@cron_popularites 75 function cron_popularites($t) { 76 calculer_popularites(); 77 return 1; 78 } 79 80 81 ?>
titre
Description
Corps
titre
Description
Corps
titre
Description
Corps
titre
Corps
Généré le : Wed Nov 21 10:20:27 2007 | par Balluche grâce à PHPXref 0.7 |
![]() |