@@ -17,7 +17,7 @@ discard block |
||
| 17 | 17 | **/ |
| 18 | 18 | |
| 19 | 19 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 20 | - return; |
|
| 20 | + return; |
|
| 21 | 21 | } |
| 22 | 22 | |
| 23 | 23 | include_spip('base/abstract_sql'); |
@@ -35,14 +35,14 @@ discard block |
||
| 35 | 35 | **/ |
| 36 | 36 | function genie_optimiser_dist($t) { |
| 37 | 37 | |
| 38 | - optimiser_base_une_table(); |
|
| 39 | - optimiser_base(); |
|
| 38 | + optimiser_base_une_table(); |
|
| 39 | + optimiser_base(); |
|
| 40 | 40 | |
| 41 | - // la date souhaitee pour le tour suivant = apres-demain a 4h du mat ; |
|
| 42 | - // sachant qu'on a un delai de 48h, on renvoie aujourd'hui a 4h du mat |
|
| 43 | - // avec une periode de flou entre 2h et 6h pour ne pas saturer un hebergeur |
|
| 44 | - // qui aurait beaucoup de sites SPIP |
|
| 45 | - return -(mktime(2, 0, 0) + rand(0, 3600 * 4)); |
|
| 41 | + // la date souhaitee pour le tour suivant = apres-demain a 4h du mat ; |
|
| 42 | + // sachant qu'on a un delai de 48h, on renvoie aujourd'hui a 4h du mat |
|
| 43 | + // avec une periode de flou entre 2h et 6h pour ne pas saturer un hebergeur |
|
| 44 | + // qui aurait beaucoup de sites SPIP |
|
| 45 | + return -(mktime(2, 0, 0) + rand(0, 3600 * 4)); |
|
| 46 | 46 | } |
| 47 | 47 | |
| 48 | 48 | /** |
@@ -57,7 +57,7 @@ discard block |
||
| 57 | 57 | * @return void |
| 58 | 58 | **/ |
| 59 | 59 | function optimiser_base($attente = 86400) { |
| 60 | - optimiser_base_disparus($attente); |
|
| 60 | + optimiser_base_disparus($attente); |
|
| 61 | 61 | } |
| 62 | 62 | |
| 63 | 63 | |
@@ -74,28 +74,28 @@ discard block |
||
| 74 | 74 | **/ |
| 75 | 75 | function optimiser_base_une_table() { |
| 76 | 76 | |
| 77 | - $tables = array(); |
|
| 78 | - $result = sql_showbase(); |
|
| 79 | - |
|
| 80 | - // on n'optimise qu'une seule table a chaque fois, |
|
| 81 | - // pour ne pas vautrer le systeme |
|
| 82 | - // lire http://dev.mysql.com/doc/refman/5.0/fr/optimize-table.html |
|
| 83 | - while ($row = sql_fetch($result)) { |
|
| 84 | - $tables[] = array_shift($row); |
|
| 85 | - } |
|
| 86 | - |
|
| 87 | - spip_log("optimiser_base_une_table ".json_encode($tables), 'genie'._LOG_DEBUG); |
|
| 88 | - if ($tables) { |
|
| 89 | - $table_op = intval(lire_config('optimiser_table', 0) + 1) % sizeof($tables); |
|
| 90 | - ecrire_config('optimiser_table', $table_op); |
|
| 91 | - $q = $tables[$table_op]; |
|
| 92 | - spip_log("optimiser_base_une_table : debut d'optimisation de la table $q", 'genie'._LOG_DEBUG); |
|
| 93 | - if (sql_optimize($q)) { |
|
| 94 | - spip_log("optimiser_base_une_table : fin d'optimisation de la table $q", 'genie'._LOG_DEBUG); |
|
| 95 | - } else { |
|
| 96 | - spip_log("optimiser_base_une_table : Pas d'optimiseur necessaire", 'genie'._LOG_DEBUG); |
|
| 97 | - } |
|
| 98 | - } |
|
| 77 | + $tables = array(); |
|
| 78 | + $result = sql_showbase(); |
|
| 79 | + |
|
| 80 | + // on n'optimise qu'une seule table a chaque fois, |
|
| 81 | + // pour ne pas vautrer le systeme |
|
| 82 | + // lire http://dev.mysql.com/doc/refman/5.0/fr/optimize-table.html |
|
| 83 | + while ($row = sql_fetch($result)) { |
|
| 84 | + $tables[] = array_shift($row); |
|
| 85 | + } |
|
| 86 | + |
|
| 87 | + spip_log("optimiser_base_une_table ".json_encode($tables), 'genie'._LOG_DEBUG); |
|
| 88 | + if ($tables) { |
|
| 89 | + $table_op = intval(lire_config('optimiser_table', 0) + 1) % sizeof($tables); |
|
| 90 | + ecrire_config('optimiser_table', $table_op); |
|
| 91 | + $q = $tables[$table_op]; |
|
| 92 | + spip_log("optimiser_base_une_table : debut d'optimisation de la table $q", 'genie'._LOG_DEBUG); |
|
| 93 | + if (sql_optimize($q)) { |
|
| 94 | + spip_log("optimiser_base_une_table : fin d'optimisation de la table $q", 'genie'._LOG_DEBUG); |
|
| 95 | + } else { |
|
| 96 | + spip_log("optimiser_base_une_table : Pas d'optimiseur necessaire", 'genie'._LOG_DEBUG); |
|
| 97 | + } |
|
| 98 | + } |
|
| 99 | 99 | } |
| 100 | 100 | |
| 101 | 101 | |
@@ -121,18 +121,18 @@ discard block |
||
| 121 | 121 | * Nombre de suppressions |
| 122 | 122 | **/ |
| 123 | 123 | function optimiser_sansref($table, $id, $sel, $and = '') { |
| 124 | - $in = array(); |
|
| 125 | - while ($row = sql_fetch($sel)) { |
|
| 126 | - $in[$row['id']] = true; |
|
| 127 | - } |
|
| 128 | - sql_free($sel); |
|
| 129 | - |
|
| 130 | - if ($in) { |
|
| 131 | - sql_delete($table, sql_in($id, array_keys($in)) . ($and ? " AND $and" : '')); |
|
| 132 | - spip_log("optimiser_sansref: Numeros des entrees $id supprimees dans la table $table: " . implode(', ', array_keys($in)), 'genie'._LOG_DEBUG); |
|
| 133 | - } |
|
| 134 | - |
|
| 135 | - return count($in); |
|
| 124 | + $in = array(); |
|
| 125 | + while ($row = sql_fetch($sel)) { |
|
| 126 | + $in[$row['id']] = true; |
|
| 127 | + } |
|
| 128 | + sql_free($sel); |
|
| 129 | + |
|
| 130 | + if ($in) { |
|
| 131 | + sql_delete($table, sql_in($id, array_keys($in)) . ($and ? " AND $and" : '')); |
|
| 132 | + spip_log("optimiser_sansref: Numeros des entrees $id supprimees dans la table $table: " . implode(', ', array_keys($in)), 'genie'._LOG_DEBUG); |
|
| 133 | + } |
|
| 134 | + |
|
| 135 | + return count($in); |
|
| 136 | 136 | } |
| 137 | 137 | |
| 138 | 138 | |
@@ -154,76 +154,76 @@ discard block |
||
| 154 | 154 | **/ |
| 155 | 155 | function optimiser_base_disparus($attente = 86400) { |
| 156 | 156 | |
| 157 | - # format = 20060610110141, si on veut forcer une optimisation tout de suite |
|
| 158 | - $mydate = sql_quote(date("Y-m-d H:i:s", time() - $attente)); |
|
| 157 | + # format = 20060610110141, si on veut forcer une optimisation tout de suite |
|
| 158 | + $mydate = sql_quote(date("Y-m-d H:i:s", time() - $attente)); |
|
| 159 | 159 | |
| 160 | - $n = 0; |
|
| 160 | + $n = 0; |
|
| 161 | 161 | |
| 162 | - // |
|
| 163 | - // Rubriques |
|
| 164 | - // |
|
| 162 | + // |
|
| 163 | + // Rubriques |
|
| 164 | + // |
|
| 165 | 165 | |
| 166 | - # les articles qui sont dans une id_rubrique inexistante |
|
| 167 | - # attention on controle id_rubrique>0 pour ne pas tuer les articles |
|
| 168 | - # specialement affectes a une rubrique non-existante (plugin, |
|
| 169 | - # cf. https://core.spip.net/issues/1549 ) |
|
| 170 | - $res = sql_select("A.id_article AS id", |
|
| 171 | - "spip_articles AS A |
|
| 166 | + # les articles qui sont dans une id_rubrique inexistante |
|
| 167 | + # attention on controle id_rubrique>0 pour ne pas tuer les articles |
|
| 168 | + # specialement affectes a une rubrique non-existante (plugin, |
|
| 169 | + # cf. https://core.spip.net/issues/1549 ) |
|
| 170 | + $res = sql_select("A.id_article AS id", |
|
| 171 | + "spip_articles AS A |
|
| 172 | 172 | LEFT JOIN spip_rubriques AS R |
| 173 | 173 | ON A.id_rubrique=R.id_rubrique", |
| 174 | - "A.id_rubrique > 0 |
|
| 174 | + "A.id_rubrique > 0 |
|
| 175 | 175 | AND R.id_rubrique IS NULL |
| 176 | 176 | AND A.maj < $mydate"); |
| 177 | 177 | |
| 178 | - $n += optimiser_sansref('spip_articles', 'id_article', $res); |
|
| 178 | + $n += optimiser_sansref('spip_articles', 'id_article', $res); |
|
| 179 | 179 | |
| 180 | - // les articles a la poubelle |
|
| 181 | - sql_delete("spip_articles", "statut='poubelle' AND maj < $mydate"); |
|
| 180 | + // les articles a la poubelle |
|
| 181 | + sql_delete("spip_articles", "statut='poubelle' AND maj < $mydate"); |
|
| 182 | 182 | |
| 183 | - // |
|
| 184 | - // Auteurs |
|
| 185 | - // |
|
| 183 | + // |
|
| 184 | + // Auteurs |
|
| 185 | + // |
|
| 186 | 186 | |
| 187 | - include_spip('action/editer_liens'); |
|
| 188 | - // optimiser les liens de tous les auteurs vers des objets effaces |
|
| 189 | - // et depuis des auteurs effaces |
|
| 190 | - $n += objet_optimiser_liens(array('auteur' => '*'), '*'); |
|
| 187 | + include_spip('action/editer_liens'); |
|
| 188 | + // optimiser les liens de tous les auteurs vers des objets effaces |
|
| 189 | + // et depuis des auteurs effaces |
|
| 190 | + $n += objet_optimiser_liens(array('auteur' => '*'), '*'); |
|
| 191 | 191 | |
| 192 | - # effacer les auteurs poubelle qui ne sont lies a rien |
|
| 193 | - $res = sql_select("A.id_auteur AS id", |
|
| 194 | - "spip_auteurs AS A |
|
| 192 | + # effacer les auteurs poubelle qui ne sont lies a rien |
|
| 193 | + $res = sql_select("A.id_auteur AS id", |
|
| 194 | + "spip_auteurs AS A |
|
| 195 | 195 | LEFT JOIN spip_auteurs_liens AS L |
| 196 | 196 | ON L.id_auteur=A.id_auteur", |
| 197 | - "L.id_auteur IS NULL |
|
| 197 | + "L.id_auteur IS NULL |
|
| 198 | 198 | AND A.statut='5poubelle' AND A.maj < $mydate"); |
| 199 | 199 | |
| 200 | - $n += optimiser_sansref('spip_auteurs', 'id_auteur', $res); |
|
| 201 | - |
|
| 202 | - # supprimer les auteurs 'nouveau' qui n'ont jamais donne suite |
|
| 203 | - # au mail de confirmation (45 jours pour repondre, ca devrait suffire) |
|
| 204 | - if (!defined('_AUTEURS_DELAI_REJET_NOUVEAU')) { |
|
| 205 | - define('_AUTEURS_DELAI_REJET_NOUVEAU', 45 * 24 * 3600); |
|
| 206 | - } |
|
| 207 | - sql_delete("spip_auteurs", "statut='nouveau' AND maj < " . sql_quote(date('Y-m-d', time() - intval(_AUTEURS_DELAI_REJET_NOUVEAU)))); |
|
| 208 | - |
|
| 209 | - /** |
|
| 210 | - * Permet aux plugins de compléter l'optimisation suite aux éléments disparus |
|
| 211 | - * |
|
| 212 | - * L'index 'data' est un entier indiquant le nombre d'optimisations |
|
| 213 | - * qui ont été réalisées (par exemple le nombre de suppressions faites) |
|
| 214 | - * et qui doit être incrémenté par les fonctions |
|
| 215 | - * utilisant ce pipeline si elles suppriment des éléments. |
|
| 216 | - * |
|
| 217 | - * @pipeline_appel optimiser_base_disparus |
|
| 218 | - */ |
|
| 219 | - $n = pipeline('optimiser_base_disparus', array( |
|
| 220 | - 'args' => array( |
|
| 221 | - 'attente' => $attente, |
|
| 222 | - 'date' => $mydate |
|
| 223 | - ), |
|
| 224 | - 'data' => $n |
|
| 225 | - )); |
|
| 226 | - |
|
| 227 | - |
|
| 228 | - spip_log("optimiser_base_disparus : {$n} lien(s) mort(s)", 'genie'._LOG_DEBUG); |
|
| 200 | + $n += optimiser_sansref('spip_auteurs', 'id_auteur', $res); |
|
| 201 | + |
|
| 202 | + # supprimer les auteurs 'nouveau' qui n'ont jamais donne suite |
|
| 203 | + # au mail de confirmation (45 jours pour repondre, ca devrait suffire) |
|
| 204 | + if (!defined('_AUTEURS_DELAI_REJET_NOUVEAU')) { |
|
| 205 | + define('_AUTEURS_DELAI_REJET_NOUVEAU', 45 * 24 * 3600); |
|
| 206 | + } |
|
| 207 | + sql_delete("spip_auteurs", "statut='nouveau' AND maj < " . sql_quote(date('Y-m-d', time() - intval(_AUTEURS_DELAI_REJET_NOUVEAU)))); |
|
| 208 | + |
|
| 209 | + /** |
|
| 210 | + * Permet aux plugins de compléter l'optimisation suite aux éléments disparus |
|
| 211 | + * |
|
| 212 | + * L'index 'data' est un entier indiquant le nombre d'optimisations |
|
| 213 | + * qui ont été réalisées (par exemple le nombre de suppressions faites) |
|
| 214 | + * et qui doit être incrémenté par les fonctions |
|
| 215 | + * utilisant ce pipeline si elles suppriment des éléments. |
|
| 216 | + * |
|
| 217 | + * @pipeline_appel optimiser_base_disparus |
|
| 218 | + */ |
|
| 219 | + $n = pipeline('optimiser_base_disparus', array( |
|
| 220 | + 'args' => array( |
|
| 221 | + 'attente' => $attente, |
|
| 222 | + 'date' => $mydate |
|
| 223 | + ), |
|
| 224 | + 'data' => $n |
|
| 225 | + )); |
|
| 226 | + |
|
| 227 | + |
|
| 228 | + spip_log("optimiser_base_disparus : {$n} lien(s) mort(s)", 'genie'._LOG_DEBUG); |
|
| 229 | 229 | } |
@@ -128,8 +128,8 @@ discard block |
||
| 128 | 128 | sql_free($sel); |
| 129 | 129 | |
| 130 | 130 | if ($in) { |
| 131 | - sql_delete($table, sql_in($id, array_keys($in)) . ($and ? " AND $and" : '')); |
|
| 132 | - spip_log("optimiser_sansref: Numeros des entrees $id supprimees dans la table $table: " . implode(', ', array_keys($in)), 'genie'._LOG_DEBUG); |
|
| 131 | + sql_delete($table, sql_in($id, array_keys($in)).($and ? " AND $and" : '')); |
|
| 132 | + spip_log("optimiser_sansref: Numeros des entrees $id supprimees dans la table $table: ".implode(', ', array_keys($in)), 'genie'._LOG_DEBUG); |
|
| 133 | 133 | } |
| 134 | 134 | |
| 135 | 135 | return count($in); |
@@ -204,7 +204,7 @@ discard block |
||
| 204 | 204 | if (!defined('_AUTEURS_DELAI_REJET_NOUVEAU')) { |
| 205 | 205 | define('_AUTEURS_DELAI_REJET_NOUVEAU', 45 * 24 * 3600); |
| 206 | 206 | } |
| 207 | - sql_delete("spip_auteurs", "statut='nouveau' AND maj < " . sql_quote(date('Y-m-d', time() - intval(_AUTEURS_DELAI_REJET_NOUVEAU)))); |
|
| 207 | + sql_delete("spip_auteurs", "statut='nouveau' AND maj < ".sql_quote(date('Y-m-d', time() - intval(_AUTEURS_DELAI_REJET_NOUVEAU)))); |
|
| 208 | 208 | |
| 209 | 209 | /** |
| 210 | 210 | * Permet aux plugins de compléter l'optimisation suite aux éléments disparus |