From 04400183b50d753a13daeb23c40c63de391a1816 Mon Sep 17 00:00:00 2001 From: "Committo,Ergo:sum" <esj@rezo.net> Date: Thu, 2 Nov 2006 22:23:40 +0000 Subject: [PATCH] =?UTF-8?q?Le=20bug=20de=20[7758]=20=C3=A9tait=20du=20?= =?UTF-8?q?=C3=A0=20[7674]:=20on=20partage=20effectivement=20tellement=20d?= =?UTF-8?q?'utilisations=20d'une=20meme=20requete,=20que=20le=20nombre=20d?= =?UTF-8?q?e=20r=C3=A9ponses=20a=20toutes=20les=20chances=20de=20varier=20?= =?UTF-8?q?souvent=20il=20n'est=20vraiment=20pas=20question=20de=20le=20m?= =?UTF-8?q?=C3=A9moriser,=20il=20faut=20le=20recalculer=20=C3=A0=20chaque?= =?UTF-8?q?=20fois.=20Du=20coup=20on=20supprime=20le=20champ=20id=5Fauteur?= =?UTF-8?q?=20de=20cette=20table,=20car=20il=20ne=20peut=20plus=20servir?= =?UTF-8?q?=20=C3=A0=20rien.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit En fait cette table mémorise différentes requetes qui ne sont pas si nombreuses, on pourrait les coder dans un tableau PHP statique et id_ajax_fonc n'en serait plus que l'index, ça éviterait les appels à SQL. --- ecrire/base/serial.php | 1 - ecrire/base/upgrade.php | 7 ++++++- ecrire/exec/memoriser.php | 10 +++++----- ecrire/inc/presentation.php | 22 ++++++++-------------- ecrire/inc_version.php | 2 +- 5 files changed, 20 insertions(+), 22 deletions(-) diff --git a/ecrire/base/serial.php b/ecrire/base/serial.php index 767d0973df..5aff7166cd 100644 --- a/ecrire/base/serial.php +++ b/ecrire/base/serial.php @@ -339,7 +339,6 @@ $spip_signatures_key = array( $spip_ajax_fonc = array( "id_ajax_fonc" => "bigint(21) NOT NULL", - "id_auteur" => "bigint(21) NOT NULL", "variables" => "text NOT NULL", "date" => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL", "`hash`" => "BIGINT UNSIGNED NOT NULL" ); diff --git a/ecrire/base/upgrade.php b/ecrire/base/upgrade.php index 753224a82f..f296812dd8 100644 --- a/ecrire/base/upgrade.php +++ b/ecrire/base/upgrade.php @@ -1208,6 +1208,11 @@ function maj_base($version_cible = 0) { maj_version(1.918); } + if (upgrade_vers(1.919, $version_installee, $version_cible)) { + spip_query("ALTER TABLE spip_ajax_fonc DROP id_auteur"); + maj_version(1.919); + } + } -?> \ No newline at end of file +?> diff --git a/ecrire/exec/memoriser.php b/ecrire/exec/memoriser.php index a64fadcdbe..ea5cdbc6c1 100644 --- a/ecrire/exec/memoriser.php +++ b/ecrire/exec/memoriser.php @@ -17,16 +17,16 @@ function exec_memoriser_dist() { $id_ajax = intval(_request('id_ajax_fonc')); - // le champ id_auteur sert finalement a memoriser le nombre de lignes - // (a renommer) - - $res = spip_fetch_array(spip_query($q = "SELECT variables, id_auteur, hash FROM spip_ajax_fonc WHERE id_ajax_fonc = $id_ajax")); + $res = spip_fetch_array(spip_query($q = "SELECT variables, hash FROM spip_ajax_fonc WHERE id_ajax_fonc = $id_ajax")); if ($res) { include_spip('inc/presentation'); list($t,$r,$p,$f) = unserialize($res["variables"]); - ajax_retour(afficher_articles_trad($t, $r, $f, $p, $id_ajax, $res['id_auteur'], _request('trad'))); + + $cpt = spip_fetch_array(spip_query("SELECT COUNT(*) AS n FROM " . $r['FROM'] . ($r['WHERE'] ? (' WHERE ' . $r['WHERE']) : '') . ($r['GROUP BY'] ? (' GROUP BY ' . $r['GROUP BY']) : ''))); + + ajax_retour(afficher_articles_trad($t, $r, $f, $p, $id_ajax, $cpt['n'], _request('trad'))); } else spip_log("memoriser $q vide"); } diff --git a/ecrire/inc/presentation.php b/ecrire/inc/presentation.php index c218a72664..d87979fcb3 100644 --- a/ecrire/inc/presentation.php +++ b/ecrire/inc/presentation.php @@ -680,36 +680,30 @@ function afficher_articles($titre, $requete, $formater_article='') { if (!isset($requete['GROUP BY'])) $requete['GROUP BY'] = ''; + $cpt = spip_fetch_array(spip_query("SELECT COUNT(*) AS n FROM " . $requete['FROM'] . ($requete['WHERE'] ? (' WHERE ' . $requete['WHERE']) : '') . ($requete['GROUP BY'] ? (' GROUP BY ' . $requete['GROUP BY']) : ''))); + + if (!$cpt = $cpt['n']) return '' ; + // memorisation des arguments pour gérer l'affichage par tranche // et/ou par langues. $hash = substr(md5(serialize($requete) . $GLOBALS['meta']['gerer_trad'] . $titre), 0, 31); $tmp_var = 't' . substr($hash, 0, 7); + $nb_aff = floor(1.5 * _TRANCHES); + $deb_aff = intval(_request($tmp_var)); - // le champ id_auteur sert finalement a memoriser le nombre de lignes - // (a renommer) - - $res_proch = spip_query("SELECT id_ajax_fonc, id_auteur FROM spip_ajax_fonc WHERE hash=0x$hash LIMIT 1"); + $res_proch = spip_query("SELECT id_ajax_fonc FROM spip_ajax_fonc WHERE hash=0x$hash LIMIT 1"); if ($row = spip_fetch_array($res_proch)) { $id_ajax = $row["id_ajax_fonc"]; - $cpt = $row["id_auteur"]; } else { - - $cpt = spip_fetch_array(spip_query("SELECT COUNT(*) AS n FROM " . $requete['FROM'] . ($requete['WHERE'] ? (' WHERE ' . $requete['WHERE']) : '') . ($requete['GROUP BY'] ? (' GROUP BY ' . $requete['GROUP BY']) : ''))); - - if (!$cpt = $cpt['n']) return '' ; - if (isset($requete['LIMIT'])) $cpt = min($requete['LIMIT'], $cpt); $v = serialize(array($titre, $requete, $tmp_var, $formater_article)); include_spip ('base/abstract_sql'); - $id_ajax = spip_abstract_insert("spip_ajax_fonc", "(variables, hash, id_auteur, date)", "(" . _q($v) . ", 0x$hash, $cpt, NOW())"); + $id_ajax = spip_abstract_insert("spip_ajax_fonc", "(variables, hash, date)", "(" . _q($v) . ", 0x$hash, NOW())"); } - $nb_aff = floor(1.5 * _TRANCHES); - $deb_aff = intval(_request($tmp_var)); - $requete['FROM'] = preg_replace("/(spip_articles AS \w*)/", "\\1 LEFT JOIN spip_petitions AS petitions USING (id_article)", $requete['FROM']); $requete['SELECT'] .= ", petitions.id_article AS petition "; diff --git a/ecrire/inc_version.php b/ecrire/inc_version.php index ca379e6a7d..6405a84aad 100644 --- a/ecrire/inc_version.php +++ b/ecrire/inc_version.php @@ -279,7 +279,7 @@ $tables_des_serveurs_sql['localhost'] = &$tables_principales; // (utilise pour les modifs de la base de donnees) // version de la base -$spip_version = 1.918; +$spip_version = 1.919; // version de spip en chaine // et en numerique a incrementer sur les evolutions qui cassent la compatibilite descendante -- GitLab