Skip to content
Extraits de code Groupes Projets
Valider 8d20150a rédigé par esj's avatar esj
Parcourir les fichiers

bug du md5 des visites non représenté par SQL car > 2^63

parent a03f169c
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -177,6 +177,7 @@ function calculer_n_referers($nb_referers) { ...@@ -177,6 +177,7 @@ function calculer_n_referers($nb_referers) {
$referer_insert = ""; $referer_insert = "";
$referer_update = ""; $referer_update = "";
$referer_vus = "";
while ($row = @spip_fetch_array($result)) { while ($row = @spip_fetch_array($result)) {
$visites = $row['visites']; $visites = $row['visites'];
...@@ -184,8 +185,10 @@ function calculer_n_referers($nb_referers) { ...@@ -184,8 +185,10 @@ function calculer_n_referers($nb_referers) {
$referer_md5 = '0x'.$row['md5']; $referer_md5 = '0x'.$row['md5'];
$referer_update[$visites][] = $referer_md5; $referer_update[$visites][] = $referer_md5;
$referer_insert[] = "('$date', '$referer', $referer_md5, $visites, $visites)"; $referer_insert[] = "('$date', '$referer', $referer_md5, $visites, $visites)";
$referer_vus[] = $referer_md5; $referer_vus .= "," . $referer_md5;
} }
if ($referer_vus)
$referer_vus = "referer_md5 IN (" . substr($referer_vus,1) . ")";
// Mise a jour de la base // Mise a jour de la base
if (is_array($referer_update)) { if (is_array($referer_update)) {
...@@ -202,9 +205,9 @@ function calculer_n_referers($nb_referers) { ...@@ -202,9 +205,9 @@ function calculer_n_referers($nb_referers) {
} }
// Ventiler ces referers article par article // Ventiler ces referers article par article
$where = (is_array($referer_vus)) ? "AND referer_md5 IN (".join(',',$referer_vus).")" : ""; $query = "SELECT COUNT(DISTINCT ip) AS visites, id_objet, referer, HEX(referer_md5) AS md5 FROM spip_referers_temp WHERE type='article'"
$query = "SELECT COUNT(DISTINCT ip) AS visites, id_objet, referer, HEX(referer_md5) AS md5 ". . ($referer_vus ? " AND $referer_vus" : '')
"FROM spip_referers_temp WHERE type='article' $where GROUP BY id_objet, referer_md5"; . " GROUP BY id_objet, referer_md5";
$result = spip_query($query); $result = spip_query($query);
$referer_insert = ""; $referer_insert = "";
...@@ -235,9 +238,8 @@ function calculer_n_referers($nb_referers) { ...@@ -235,9 +238,8 @@ function calculer_n_referers($nb_referers) {
} }
// Effacer les referers traites // Effacer les referers traites
if (is_array($referer_vus)) { if ($referer_vus) {
$query_effacer = "DELETE FROM spip_referers_temp WHERE referer_md5 IN (".join(",",$referer_vus).")"; spip_query("DELETE FROM spip_referers_temp WHERE referer_md5 IN ($referer_vus)");
$result_effacer = spip_query($query_effacer);
} }
return $tous ; return $tous ;
......
...@@ -45,7 +45,7 @@ function ecrire_stats() { ...@@ -45,7 +45,7 @@ function ecrire_stats() {
$log_referer = $GLOBALS['HTTP_REFERER']; $log_referer = $GLOBALS['HTTP_REFERER'];
if (($url_site_spip<>'') AND strpos('-'.strtolower($log_referer), strtolower($url_site_spip)) AND !$GLOBALS['var_recherche']) $log_referer = ""; if (($url_site_spip<>'') AND strpos('-'.strtolower($log_referer), strtolower($url_site_spip)) AND !$GLOBALS['var_recherche']) $log_referer = "";
if ($log_referer) { if ($log_referer) {
$referer_md5 = '0x'.substr(md5($log_referer), 0, 16); $referer_md5 = '0x'.substr(md5($log_referer), 0, 15);
$query = "INSERT IGNORE INTO spip_referers_temp (ip, referer, referer_md5, type, id_objet) ". $query = "INSERT IGNORE INTO spip_referers_temp (ip, referer, referer_md5, type, id_objet) ".
"VALUES ($log_ip, '$log_referer', $referer_md5, '$log_type', $log_id_num)"; "VALUES ($log_ip, '$log_referer', $referer_md5, '$log_type', $log_id_num)";
spip_query($query); spip_query($query);
......
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