Skip to content
Extraits de code Groupes Projets
Valider 5caaa78b rédigé par ARNO*'s avatar ARNO*
Parcourir les fichiers

Optimisation referers. Calcul nombre de visites directes et popularite dans spip_articles

parent 54a35295
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -30,7 +30,8 @@ function creer_base() {
export VARCHAR(10) DEFAULT 'oui',
date_redac datetime DEFAULT '0000-00-00 00:00:00' NOT NULL,
visites INTEGER DEFAULT '0' NOT NULL,
referers BLOB NOT NULL,
referers INTEGER DEFAULT '0' NOT NULL,
popularite INTEGER DEFAULT '0' NOT NULL,
accepter_forum CHAR(3) NOT NULL,
auteur_modif bigint(21) DEFAULT '0' NOT NULL,
date_modif datetime DEFAULT '0000-00-00 00:00:00' NOT NULL,
......@@ -838,6 +839,14 @@ function maj_base() {
spip_query($query);
}
if ($version_installee < 1.432) {
spip_query("ALTER TABLE spip_articles DROP referers");
$query = "ALTER TABLE spip_articles ADD referers INTEGER DEFAULT '0' NOT NULL";
spip_query($query);
$query = "ALTER TABLE spip_articles ADD popularite INTEGER DEFAULT '0' NOT NULL";
spip_query($query);
}
//
// Mettre a jour le numero de version installee
......
......@@ -1573,7 +1573,7 @@ if (ereg("index.php3$", $GLOBALS['REQUEST_URI'])) {
echo "<br>Les icones de l'interface sont de <a href='http://jimmac.musichall.cz/'>Jakub 'Jimmac' Steiner</a>";
}
if (ereg("statistiques_visites.php3$", $GLOBALS['REQUEST_URI']) OR ereg("statistiques_referers.php3$", $GLOBALS['REQUEST_URI'])) {
echo "<br>L'affichage des requ&ecirc;tes des moteurs de recherche est r&eacute;alis&eacute;<br>&agrave; partir d'un extrait du code de <a href='http://www.phpinfo.net/'>Visiteurs</a>,<br> par Jean-Pierre D&eacute;z&eacute;lus.";
echo "<br>L'affichage des requ&ecirc;tes des moteurs de recherche est r&eacute;alis&eacute;<br>&agrave; partir d'un extrait du code de <a href='http://www.phpinfo.net/'>Visiteurs</a>, par Jean-Pierre D&eacute;z&eacute;lus";
}
?>
</div></blockquote>
......
......@@ -201,10 +201,71 @@ function calculer_visites(){
$result_effacer = spip_query($query_effacer);
}
$query_effacer = "DELETE FROM spip_visites_referers WHERE date < DATE_SUB(NOW(),INTERVAL 7 DAY) AND visites = '1'";
$result_effacer = spip_query($query_effacer);
}
function supprimer_referers($type){
// Recuperer les 100 plus gros referers de ce type
$query = "SELECT id_referer, visites FROM spip_visites_referers WHERE type ='$type' ORDER BY visites DESC LIMIT 0,100";
$result = spip_query($query);
while ($row = mysql_fetch_array($result)) {
$id_referer[] = $row['id_referer'];
$visites = $visites + $row['visites'];
}
// Supprimer les autres s'ils datent de plus d'une semaine
if ($id_referer){
$referers = join($id_referer, ",");
$query = "DELETE FROM spip_visites_referers WHERE type ='$type' AND id_referer NOT IN ($referers) AND date < DATE_SUB(NOW(),INTERVAL 7 DAY)";
$result = spip_query($query);
}
// Reinjecter total des visites des referers dans spip_articles
if (ereg("article([0-9]+)", $type, $regs)){
$id_article = $regs[1];
if ($visites<1) $visites = 1;
$query = "UPDATE spip_articles SET referers = '$visites' WHERE id_article = '$id_article'";
$result = spip_query($query);
}
}
function optimiser_referers(){
// Supprimer referers inutiles
supprimer_referers("tout");
$query = "SELECT id_article FROM spip_articles WHERE statut = 'publie'";
$result = spip_query($query);
while ($row = mysql_fetch_array($result)) {
$id_article = $row['id_article'];
supprimer_referers("article$id_article");
}
// Calculer et reinjecter popularite
$query = "SELECT id_article, visites, referers FROM spip_articles WHERE statut = 'publie'";
$result = spip_query($query);
while ($row = mysql_fetch_array($result)) {
$id_article = $row['id_article'];
$visites = $row['visites'];
$referers = $row['referers'];
$popularite[$id_article] = $visites * $referers;
}
if (count($popularite)>0){
$max_pop = max($popularite);
while (list($id_article, $pop) = each($popularite)) {
$relatif = round($pop/$max_pop*1000000);
$query = "UPDATE spip_articles SET popularite = '$relatif' WHERE id_article = '$id_article'";
$result = spip_query($query);
}
}
}
?>
......@@ -13,7 +13,7 @@ define("_ECRIRE_INC_VERSION", "1");
//
// version de la base
$spip_version = 1.431;
$spip_version = 1.432;
// version de spip
// (mettre a jour a la main et conserver la mention "CVS")
......
......@@ -456,6 +456,12 @@ if (($date - $date_opt) > 8 * 3600) {
calculer_visites();
}
// Optimiser les referers
if (($date - $date_opt) > 19 * 3600) {
include ("inc_statistiques.php3");
optimiser_referers();
}
include_local ("inc_mail.php3");
include_local ("inc_sites.php3");
......
......@@ -47,10 +47,30 @@ if ($row = mysql_fetch_array($result)) {
$date = $row['cnt'];
}
afficher_articles("Les articles r&eacute;cents (3 mois) les plus visit&eacute;s",
echo "<font size=2 face='verdana,arial,helvetica'><b>";
echo "[<a href='statistiques_recents.php3'>par nombre de visites</a>] ";
echo "[<a href='statistiques_recents.php3?critere=referers'>par arriv&eacute;es directes sur la page</a>] ";
echo "[<a href='statistiques_recents.php3?critere=popularite'>par popularit&eacute;</a>] ";
echo "</b></font><p>";
if ($critere == "referers"){
afficher_articles("Les articles r&eacute;cents (3 mois) les plus r&eacute;f&eacute;renc&eacute;s",
"SELECT id_article, surtitre, titre, soustitre, descriptif, chapo, date, visites, id_rubrique, statut ".
"FROM spip_articles WHERE visites > 0 AND date>DATE_SUB('$date',INTERVAL 90 DAY) ORDER BY visites DESC LIMIT 0,100", true);
"FROM spip_articles WHERE visites > 0 AND date>DATE_SUB('$date',INTERVAL 90 DAY) ORDER BY referers DESC LIMIT 0,100", true);
}
else if ($critere == "popularite"){
echo propre("La Çpopularit&eacute;È est calcul&eacute;e d'apr&egrave;s le nombre d'arriv&eacute;es directes sur un article, multipli&eacute; par le nombre de visites. Un article devient donc &laquo;populaire&raquo; lorsqu'il fait l'objet d'un r&eacute;f&eacute;rencement sur d'autres sites et lorsqu'il est tr&egrave;s visit&eacute;.")."<p>";
afficher_articles("Les articles r&eacute;cents (3 mois) les plus populaires",
"SELECT id_article, surtitre, titre, soustitre, descriptif, chapo, date, visites, id_rubrique, statut ".
"FROM spip_articles WHERE visites > 0 AND date>DATE_SUB('$date',INTERVAL 90 DAY) ORDER BY popularite DESC LIMIT 0,100", true);
}
else{
afficher_articles("Les articles r&eacute;cents (3 mois) les plus visit&eacute;s",
"SELECT id_article, surtitre, titre, soustitre, descriptif, chapo, date, visites, id_rubrique, statut ".
"FROM spip_articles WHERE visites > 0 AND date>DATE_SUB('$date',INTERVAL 90 DAY) ORDER BY visites DESC LIMIT 0,100", true);
}
fin_page();
......
......@@ -47,9 +47,36 @@ if ($row = mysql_fetch_array($result)) {
}
afficher_articles("Les articles les plus visit&eacute;s depuis le d&eacute;but",
echo "<font size=2 face='verdana,arial,helvetica'><b>";
echo "[<a href='statistiques_tous.php3'>par nombre de visites</a>] ";
echo "[<a href='statistiques_tous.php3?critere=referers'>par arriv&eacute;es directes sur la page</a>] ";
echo "[<a href='statistiques_tous.php3?critere=popularite'>par popularit&eacute;</a>] ";
echo "</b></font><p>";
if ($critere == "referers"){
afficher_articles("Les articles les plus visit&eacute;s depuis le d&eacute;but",
"SELECT id_article, surtitre, titre, soustitre, descriptif, chapo, date, visites, id_rubrique, statut ".
"FROM spip_articles WHERE visites > 0 ORDER BY referers DESC LIMIT 0,100", true);
}
else if ($critere == "popularite"){
echo propre("La Çpopularit&eacute;È est calcul&eacute;e d'apr&egrave;s le nombre d'arriv&eacute;es directes sur un article, multipli&eacute; par le nombre de visites. Un article devient donc &laquo;populaire&raquo; lorsqu'il fait l'objet d'un r&eacute;f&eacute;rencement sur d'autres sites et lorsqu'il est tr&egrave;s visit&eacute;.")."<p>";
afficher_articles("Les articles les plus visit&eacute;s depuis le d&eacute;but",
"SELECT id_article, surtitre, titre, soustitre, descriptif, chapo, date, visites, id_rubrique, statut ".
"FROM spip_articles WHERE visites > 0 ORDER BY popularite DESC LIMIT 0,100", true);
}
else{
afficher_articles("Les articles les plus visit&eacute;s depuis le d&eacute;but",
"SELECT id_article, surtitre, titre, soustitre, descriptif, chapo, date, visites, id_rubrique, statut ".
"FROM spip_articles WHERE visites > 0 ORDER BY visites DESC LIMIT 0,100", true);
}
fin_page();
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter