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

Abstraction du script d'optimisation de la base, même si PG n'est qu'à moitié concerné.

parent 6c6bba6a
Branches
Étiquettes
Aucune requête de fusion associée trouvée
...@@ -18,9 +18,9 @@ if (!defined("_ECRIRE_INC_VERSION")) return; ...@@ -18,9 +18,9 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
// Une reconception generale est a prevoir apres l'experience des premiers // Une reconception generale est a prevoir apres l'experience des premiers
// portages. // portages.
// Chargement a la volee de la description d'un serveur de base de donnees // Cette fonction charge la description d'un serveur de base de donnees
// via la fonction spip_connect() // (via la fonction spip_connect qui etablira la connexion si ce n'est fait)
// qui etablira la premiere connexion si ce n'est fait. // et retourne la fonction produisant la requête SQL demandee
// Erreur fatale si la fonctionnalite est absente // Erreur fatale si la fonctionnalite est absente
// http://doc.spip.org/@sql_serveur // http://doc.spip.org/@sql_serveur
...@@ -33,17 +33,28 @@ function sql_serveur($ins_sql, $serveur='') { ...@@ -33,17 +33,28 @@ function sql_serveur($ins_sql, $serveur='') {
exit; exit;
} }
// Regler le codage de connexion // Dans quelques cas, l'absence de fonctionnalite ne doit pas declencher
// d'erreur fatale ==> ne pas utiliser la fonction generale
// http://doc.spip.org/@sql_set_charset // http://doc.spip.org/@sql_explain
function sql_set_charset($charset,$serveur=''){ function sql_explain($q, $serveur='') {
$f = sql_serveur('set_charset', $serveur); $desc = spip_connect($serveur);
return $f($charset, $serveur); if (function_exists($f = @$desc['explain'])) {
return $f($q, $serveur);
}
spip_log("Le serveur '$serveur' ne dispose pas de 'explain'");
return false;
} }
// Demande si un charset est disponible. function sql_optimize($q, $serveur='') {
// Pas d'erreur fatale ==> ne pas utiliser la fonction generale $desc = spip_connect($serveur);
if (function_exists($f = @$desc['optimize'])) {
return $f($q, $serveur);
}
spip_log("Le serveur '$serveur' ne dispose pas de 'optimize'");
}
// Demande si un charset est disponible.
// http://doc.spip.org/@sql_get_charset // http://doc.spip.org/@sql_get_charset
function sql_get_charset($charset, $serveur=''){ function sql_get_charset($charset, $serveur=''){
// le nom http du charset differe parfois du nom SQL utf-8 ==> utf8 etc. // le nom http du charset differe parfois du nom SQL utf-8 ==> utf8 etc.
...@@ -57,6 +68,14 @@ function sql_get_charset($charset, $serveur=''){ ...@@ -57,6 +68,14 @@ function sql_get_charset($charset, $serveur=''){
return false; return false;
} }
// Regler le codage de connexion
// http://doc.spip.org/@sql_set_charset
function sql_set_charset($charset,$serveur=''){
$f = sql_serveur('set_charset', $serveur);
return $f($charset, $serveur);
}
// Cette fonction est systematiquement appelee par les squelettes // Cette fonction est systematiquement appelee par les squelettes
// pour constuire une requete SQL de type "lecture" (SELECT) a partir // pour constuire une requete SQL de type "lecture" (SELECT) a partir
// de chaque boucle. // de chaque boucle.
...@@ -98,12 +117,6 @@ function sql_alter($q, $serveur='') { ...@@ -98,12 +117,6 @@ function sql_alter($q, $serveur='') {
return $f($q, $serveur); return $f($q, $serveur);
} }
// http://doc.spip.org/@sql_explain
function sql_explain($q, $serveur='') {
$f = sql_serveur('explain', $serveur);
return $f($q, $serveur);
}
// http://doc.spip.org/@sql_fetch // http://doc.spip.org/@sql_fetch
function sql_fetch($res, $serveur='') { function sql_fetch($res, $serveur='') {
$f = sql_serveur('fetch', $serveur); $f = sql_serveur('fetch', $serveur);
......
...@@ -48,6 +48,7 @@ function base_db_mysql_dist($host, $port, $login, $pass, $db='', $prefixe='') { ...@@ -48,6 +48,7 @@ function base_db_mysql_dist($host, $port, $login, $pass, $db='', $prefixe='') {
'insertq' => 'spip_mysql_insertq', 'insertq' => 'spip_mysql_insertq',
'listdbs' => 'spip_mysql_listdbs', 'listdbs' => 'spip_mysql_listdbs',
'multi' => 'spip_mysql_multi', 'multi' => 'spip_mysql_multi',
'optimize' => 'spip_mysql_optimize',
'query' => 'spip_mysql_query', 'query' => 'spip_mysql_query',
'replace' => 'spip_mysql_replace', 'replace' => 'spip_mysql_replace',
'select' => 'spip_mysql_select', 'select' => 'spip_mysql_select',
...@@ -114,6 +115,11 @@ function spip_mysql_alter($query, $serveur=''){ ...@@ -114,6 +115,11 @@ function spip_mysql_alter($query, $serveur=''){
return spip_mysql_query("ALTER ".$query); # i.e. que PG se debrouille return spip_mysql_query("ALTER ".$query); # i.e. que PG se debrouille
} }
function spip_mysql_optimize($table, $serveur=''){
spip_mysql_query("OPTIMIZE TABLE ". $table);
return true;
}
// http://doc.spip.org/@spip_mysql_explain // http://doc.spip.org/@spip_mysql_explain
function spip_mysql_explain($query, $serveur=''){ function spip_mysql_explain($query, $serveur=''){
if (strpos($query, 'SELECT') !== 0) return array(); if (strpos($query, 'SELECT') !== 0) return array();
......
...@@ -14,9 +14,8 @@ if (!defined("_ECRIRE_INC_VERSION")) return; ...@@ -14,9 +14,8 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
function genie_optimiser_dist($t) { function genie_optimiser_dist($t) {
if ($GLOBALS['connexions'][0]['type'] == 'mysql') optimiser_base_une_table();
optimiser_base(); optimiser_base();
else spip_log($GLOBALS['connexions'][0]['type'] . " pas d'optimiseur disponible");
return 1; return 1;
} }
...@@ -24,7 +23,6 @@ function genie_optimiser_dist($t) { ...@@ -24,7 +23,6 @@ function genie_optimiser_dist($t) {
// http://doc.spip.org/@optimiser_base // http://doc.spip.org/@optimiser_base
function optimiser_base($attente = 86400) { function optimiser_base($attente = 86400) {
optimiser_base_une_table();
optimiser_base_disparus($attente); optimiser_base_disparus($attente);
// optimisation a passer dans le plugin indexation // optimisation a passer dans le plugin indexation
...@@ -38,11 +36,8 @@ function optimiser_base($attente = 86400) { ...@@ -38,11 +36,8 @@ function optimiser_base($attente = 86400) {
// http://doc.spip.org/@optimiser_base_une_table // http://doc.spip.org/@optimiser_base_une_table
function optimiser_base_une_table() { function optimiser_base_une_table() {
$connexion = $GLOBALS['connexions'][0];
$prefixe = $connexion['prefixe'];
$tables = array(); $tables = array();
$result = spip_query("SHOW TABLES LIKE '$prefixe%'"); $result = sql_showbase();
// on n'optimise qu'une seule table a chaque fois, // on n'optimise qu'une seule table a chaque fois,
// pour ne pas vautrer le systeme // pour ne pas vautrer le systeme
...@@ -55,8 +50,9 @@ function optimiser_base_une_table() { ...@@ -55,8 +50,9 @@ function optimiser_base_une_table() {
ecrire_meta('optimiser_table', $table_op); ecrire_meta('optimiser_table', $table_op);
$q = $tables[$table_op]; $q = $tables[$table_op];
spip_log("debut d'optimisation de la table $q"); spip_log("debut d'optimisation de la table $q");
spip_query("OPTIMIZE TABLE $q"); if (sql_optimize($q))
spip_log("fin d'optimisation de la table $q"); spip_log("fin d'optimisation de la table $q");
else spip_log("Pas d'optimiseur necessaire");
} }
} }
...@@ -99,61 +95,61 @@ function optimiser_base_disparus($attente = 86400) { ...@@ -99,61 +95,61 @@ function optimiser_base_disparus($attente = 86400) {
// //
# les articles qui sont dans une id_rubrique inexistante # les articles qui sont dans une id_rubrique inexistante
$res = spip_query("SELECT articles.id_article AS id $res = sql_select("articles.id_article AS id",
FROM spip_articles AS articles "spip_articles AS articles
LEFT JOIN spip_rubriques AS rubriques LEFT JOIN spip_rubriques AS rubriques
ON articles.id_rubrique=rubriques.id_rubrique ON articles.id_rubrique=rubriques.id_rubrique",
WHERE rubriques.id_rubrique IS NULL "rubriques.id_rubrique IS NULL
AND articles.maj < $mydate"); AND articles.maj < $mydate");
$n+= optimiser_sansref('spip_articles', 'id_article', $res); $n+= optimiser_sansref('spip_articles', 'id_article', $res);
# les breves qui sont dans une id_rubrique inexistante # les breves qui sont dans une id_rubrique inexistante
$res = spip_query("SELECT breves.id_breve AS id $res = spip_select("breves.id_breve AS id",
FROM spip_breves AS breves "spip_breves AS breves
LEFT JOIN spip_rubriques AS rubriques LEFT JOIN spip_rubriques AS rubriques
ON breves.id_rubrique=rubriques.id_rubrique ON breves.id_rubrique=rubriques.id_rubrique",
WHERE rubriques.id_rubrique IS NULL "rubriques.id_rubrique IS NULL
AND breves.maj < $mydate"); AND breves.maj < $mydate");
$n+= optimiser_sansref('spip_breves', 'id_breve', $res); $n+= optimiser_sansref('spip_breves', 'id_breve', $res);
# les forums lies a une id_rubrique inexistante # les forums lies a une id_rubrique inexistante
$res = spip_query("SELECT forum.id_forum AS id $res = sql_select("forum.id_forum AS id",
FROM spip_forum AS forum "spip_forum AS forum
LEFT JOIN spip_rubriques AS rubriques LEFT JOIN spip_rubriques AS rubriques
ON forum.id_rubrique=rubriques.id_rubrique ON forum.id_rubrique=rubriques.id_rubrique",
WHERE rubriques.id_rubrique IS NULL "rubriques.id_rubrique IS NULL
AND forum.id_rubrique>0"); AND forum.id_rubrique>0");
$n+= optimiser_sansref('spip_forum', 'id_forum', $res); $n+= optimiser_sansref('spip_forum', 'id_forum', $res);
# les droits d'auteurs sur une id_rubrique inexistante # les droits d'auteurs sur une id_rubrique inexistante
# (plusieurs entrees seront eventuellement detruites pour chaque rub) # (plusieurs entrees seront eventuellement detruites pour chaque rub)
$res = spip_query("SELECT auteurs_rubriques.id_rubrique AS id $res = sql_select("auteurs_rubriques.id_rubrique AS id",
FROM spip_auteurs_rubriques AS auteurs_rubriques "spip_auteurs_rubriques AS auteurs_rubriques
LEFT JOIN spip_rubriques AS rubriques LEFT JOIN spip_rubriques AS rubriques
ON auteurs_rubriques.id_rubrique=rubriques.id_rubrique ON auteurs_rubriques.id_rubrique=rubriques.id_rubrique",
WHERE rubriques.id_rubrique IS NULL"); "rubriques.id_rubrique IS NULL");
$n+= optimiser_sansref('spip_auteurs_rubriques', 'id_rubrique', $res); $n+= optimiser_sansref('spip_auteurs_rubriques', 'id_rubrique', $res);
# les liens des documents qui sont dans une id_rubrique inexistante # les liens des documents qui sont dans une id_rubrique inexistante
# (meme remarque) # (meme remarque)
$res = spip_query("SELECT documents_rubriques.id_rubrique AS id $res = sql_select("documents_rubriques.id_rubrique AS id",
FROM spip_documents_rubriques AS documents_rubriques "spip_documents_rubriques AS documents_rubriques
LEFT JOIN spip_rubriques AS rubriques LEFT JOIN spip_rubriques AS rubriques
ON documents_rubriques.id_rubrique=rubriques.id_rubrique ON documents_rubriques.id_rubrique=rubriques.id_rubrique",
WHERE rubriques.id_rubrique IS NULL"); "rubriques.id_rubrique IS NULL");
$n+= optimiser_sansref('spip_documents_rubriques', 'id_rubrique', $res); $n+= optimiser_sansref('spip_documents_rubriques', 'id_rubrique', $res);
# les liens des mots affectes a une id_rubrique inexistante # les liens des mots affectes a une id_rubrique inexistante
$res = spip_query("SELECT mots_rubriques.id_rubrique AS id $res = sql_select("mots_rubriques.id_rubrique AS id",
FROM spip_mots_rubriques AS mots_rubriques "spip_mots_rubriques AS mots_rubriques
LEFT JOIN spip_rubriques AS rubriques LEFT JOIN spip_rubriques AS rubriques
ON mots_rubriques.id_rubrique=rubriques.id_rubrique ON mots_rubriques.id_rubrique=rubriques.id_rubrique",
WHERE rubriques.id_rubrique IS NULL"); "rubriques.id_rubrique IS NULL");
$n+= optimiser_sansref('spip_mots_rubriques', 'id_rubrique', $res); $n+= optimiser_sansref('spip_mots_rubriques', 'id_rubrique', $res);
...@@ -164,38 +160,38 @@ function optimiser_base_disparus($attente = 86400) { ...@@ -164,38 +160,38 @@ function optimiser_base_disparus($attente = 86400) {
sql_delete("spip_articles", "statut='poubelle' AND maj < $mydate"); sql_delete("spip_articles", "statut='poubelle' AND maj < $mydate");
# les liens d'auteurs d'articles effaces # les liens d'auteurs d'articles effaces
$res = spip_query("SELECT auteurs_articles.id_article AS id $res = sql_select("auteurs_articles.id_article AS id",
FROM spip_auteurs_articles AS auteurs_articles "spip_auteurs_articles AS auteurs_articles
LEFT JOIN spip_articles AS articles LEFT JOIN spip_articles AS articles
ON auteurs_articles.id_article=articles.id_article ON auteurs_articles.id_article=articles.id_article",
WHERE articles.id_article IS NULL"); "articles.id_article IS NULL");
$n+= optimiser_sansref('spip_auteurs_articles', 'id_article', $res); $n+= optimiser_sansref('spip_auteurs_articles', 'id_article', $res);
# les liens de documents d'articles effaces # les liens de documents d'articles effaces
$res = spip_query("SELECT documents_articles.id_article AS id $res = sql_select("documents_articles.id_article AS id",
FROM spip_documents_articles AS documents_articles "spip_documents_articles AS documents_articles
LEFT JOIN spip_articles AS articles LEFT JOIN spip_articles AS articles
ON documents_articles.id_article=articles.id_article ON documents_articles.id_article=articles.id_article",
WHERE articles.id_article IS NULL"); "articles.id_article IS NULL");
$n+= optimiser_sansref('spip_documents_articles', 'id_article', $res); $n+= optimiser_sansref('spip_documents_articles', 'id_article', $res);
# les liens de mots affectes a des articles effaces # les liens de mots affectes a des articles effaces
$res = spip_query("SELECT mots_articles.id_article AS id $res = sql_select("mots_articles.id_article AS id",
FROM spip_mots_articles AS mots_articles "spip_mots_articles AS mots_articles
LEFT JOIN spip_articles AS articles LEFT JOIN spip_articles AS articles
ON mots_articles.id_article=articles.id_article ON mots_articles.id_article=articles.id_article",
WHERE articles.id_article IS NULL"); "articles.id_article IS NULL");
$n+= optimiser_sansref('spip_mots_articles', 'id_article', $res); $n+= optimiser_sansref('spip_mots_articles', 'id_article', $res);
# les forums lies a des articles effaces # les forums lies a des articles effaces
$res = spip_query("SELECT forum.id_forum AS id $res = sql_select("forum.id_forum AS id",
FROM spip_forum AS forum "spip_forum AS forum
LEFT JOIN spip_articles AS articles LEFT JOIN spip_articles AS articles
ON forum.id_article=articles.id_article ON forum.id_article=articles.id_article",
WHERE articles.id_article IS NULL "articles.id_article IS NULL
AND forum.id_article>0"); AND forum.id_article>0");
$n+= optimiser_sansref('spip_forum', 'id_forum', $res); $n+= optimiser_sansref('spip_forum', 'id_forum', $res);
...@@ -208,29 +204,29 @@ function optimiser_base_disparus($attente = 86400) { ...@@ -208,29 +204,29 @@ function optimiser_base_disparus($attente = 86400) {
# les liens de documents sur des breves effacees # les liens de documents sur des breves effacees
$res = spip_query("SELECT documents_breves.id_breve AS id $res = sql_select("documents_breves.id_breve AS id",
FROM spip_documents_breves AS documents_breves "spip_documents_breves AS documents_breves
LEFT JOIN spip_breves AS breves LEFT JOIN spip_breves AS breves
ON documents_breves.id_breve=breves.id_breve ON documents_breves.id_breve=breves.id_breve",
WHERE breves.id_breve IS NULL"); "breves.id_breve IS NULL");
$n+= optimiser_sansref('spip_documents_breves', 'id_breve', $res); $n+= optimiser_sansref('spip_documents_breves', 'id_breve', $res);
# les liens de mots affectes a des breves effacees # les liens de mots affectes a des breves effacees
$res = spip_query("SELECT mots_breves.id_breve AS id $res = sql_select("mots_breves.id_breve AS id",
FROM spip_mots_breves AS mots_breves "spip_mots_breves AS mots_breves
LEFT JOIN spip_breves AS breves LEFT JOIN spip_breves AS breves
ON mots_breves.id_breve=breves.id_breve ON mots_breves.id_breve=breves.id_breve",
WHERE breves.id_breve IS NULL"); "breves.id_breve IS NULL");
$n+= optimiser_sansref('spip_mots_breves', 'id_breve', $res); $n+= optimiser_sansref('spip_mots_breves', 'id_breve', $res);
# les forums lies a des breves effacees # les forums lies a des breves effacees
$res = spip_query("SELECT forum.id_forum AS id $res = sql_select("forum.id_forum AS id",
FROM spip_forum AS forum "spip_forum AS forum
LEFT JOIN spip_breves AS breves LEFT JOIN spip_breves AS breves
ON forum.id_breve=breves.id_breve ON forum.id_breve=breves.id_breve",
WHERE breves.id_breve IS NULL "breves.id_breve IS NULL
AND forum.id_breve>0"); AND forum.id_breve>0");
$n+= optimiser_sansref('spip_forum', 'id_forum', $res); $n+= optimiser_sansref('spip_forum', 'id_forum', $res);
...@@ -244,29 +240,29 @@ function optimiser_base_disparus($attente = 86400) { ...@@ -244,29 +240,29 @@ function optimiser_base_disparus($attente = 86400) {
# les articles syndiques appartenant a des sites effaces # les articles syndiques appartenant a des sites effaces
$res = spip_query("SELECT syndic_articles.id_syndic AS id $res = sql_select("syndic_articles.id_syndic AS id",
FROM spip_syndic_articles AS syndic_articles "spip_syndic_articles AS syndic_articles
LEFT JOIN spip_syndic AS syndic LEFT JOIN spip_syndic AS syndic
ON syndic_articles.id_syndic=syndic.id_syndic ON syndic_articles.id_syndic=syndic.id_syndic",
WHERE syndic.id_syndic IS NULL"); "syndic.id_syndic IS NULL");
$n+= optimiser_sansref('spip_syndic_articles', 'id_syndic', $res); $n+= optimiser_sansref('spip_syndic_articles', 'id_syndic', $res);
# les liens de mots affectes a des sites effaces # les liens de mots affectes a des sites effaces
$res = spip_query("SELECT mots_syndic.id_syndic AS id $res = sql_select("mots_syndic.id_syndic AS id",
FROM spip_mots_syndic AS mots_syndic "spip_mots_syndic AS mots_syndic
LEFT JOIN spip_syndic AS syndic LEFT JOIN spip_syndic AS syndic
ON mots_syndic.id_syndic=syndic.id_syndic ON mots_syndic.id_syndic=syndic.id_syndic",
WHERE syndic.id_syndic IS NULL"); "syndic.id_syndic IS NULL");
$n+= optimiser_sansref('spip_mots_syndic', 'id_syndic', $res); $n+= optimiser_sansref('spip_mots_syndic', 'id_syndic', $res);
# les forums lies a des sites effaces # les forums lies a des sites effaces
$res = spip_query("SELECT forum.id_forum AS id $res = sql_select("forum.id_forum AS id",
FROM spip_forum AS forum "spip_forum AS forum
LEFT JOIN spip_syndic AS syndic LEFT JOIN spip_syndic AS syndic
ON forum.id_syndic=syndic.id_syndic ON forum.id_syndic=syndic.id_syndic",
WHERE syndic.id_syndic IS NULL "syndic.id_syndic IS NULL
AND forum.id_syndic>0"); AND forum.id_syndic>0");
$n+= optimiser_sansref('spip_forum', 'id_forum', $res); $n+= optimiser_sansref('spip_forum', 'id_forum', $res);
...@@ -276,38 +272,38 @@ function optimiser_base_disparus($attente = 86400) { ...@@ -276,38 +272,38 @@ function optimiser_base_disparus($attente = 86400) {
// //
# les liens d'articles sur des auteurs effaces # les liens d'articles sur des auteurs effaces
$res = spip_query("SELECT auteurs_articles.id_auteur AS id $res = sql_select("auteurs_articles.id_auteur AS id",
FROM spip_auteurs_articles AS auteurs_articles "spip_auteurs_articles AS auteurs_articles
LEFT JOIN spip_auteurs AS auteurs LEFT JOIN spip_auteurs AS auteurs
ON auteurs_articles.id_auteur=auteurs.id_auteur ON auteurs_articles.id_auteur=auteurs.id_auteur",
WHERE auteurs.id_auteur IS NULL"); "auteurs.id_auteur IS NULL");
$n+= optimiser_sansref('spip_auteurs_articles', 'id_auteur', $res); $n+= optimiser_sansref('spip_auteurs_articles', 'id_auteur', $res);
# les liens de messages sur des auteurs effaces # les liens de messages sur des auteurs effaces
$res = spip_query("SELECT auteurs_messages.id_auteur AS id $res = sql_select("auteurs_messages.id_auteur AS id",
FROM spip_auteurs_messages AS auteurs_messages "spip_auteurs_messages AS auteurs_messages
LEFT JOIN spip_auteurs AS auteurs LEFT JOIN spip_auteurs AS auteurs
ON auteurs_messages.id_auteur=auteurs.id_auteur ON auteurs_messages.id_auteur=auteurs.id_auteur",
WHERE auteurs.id_auteur IS NULL"); "auteurs.id_auteur IS NULL");
$n+= optimiser_sansref('spip_auteurs_messages', 'id_auteur', $res); $n+= optimiser_sansref('spip_auteurs_messages', 'id_auteur', $res);
# les liens de rubriques sur des auteurs effaces # les liens de rubriques sur des auteurs effaces
$res = spip_query("SELECT auteurs_rubriques.id_rubrique AS id $res = sql_select("auteurs_rubriques.id_rubrique AS id",
FROM spip_auteurs_rubriques AS auteurs_rubriques "spip_auteurs_rubriques AS auteurs_rubriques
LEFT JOIN spip_rubriques AS rubriques LEFT JOIN spip_rubriques AS rubriques
ON auteurs_rubriques.id_rubrique=rubriques.id_rubrique ON auteurs_rubriques.id_rubrique=rubriques.id_rubrique",
WHERE rubriques.id_rubrique IS NULL"); "rubriques.id_rubrique IS NULL");
$n+= optimiser_sansref('spip_auteurs_rubriques', 'id_rubrique', $res); $n+= optimiser_sansref('spip_auteurs_rubriques', 'id_rubrique', $res);
# effacer les auteurs poubelle qui ne sont lies a aucun article # effacer les auteurs poubelle qui ne sont lies a aucun article
$res = spip_query("SELECT auteurs.id_auteur AS id $res = sql_select("auteurs.id_auteur AS id",
FROM spip_auteurs AS auteurs "spip_auteurs AS auteurs
LEFT JOIN spip_auteurs_articles AS auteurs_articles LEFT JOIN spip_auteurs_articles AS auteurs_articles
ON auteurs_articles.id_auteur=auteurs.id_auteur ON auteurs_articles.id_auteur=auteurs.id_auteur",
WHERE auteurs_articles.id_auteur IS NULL "auteurs_articles.id_auteur IS NULL
AND auteurs.statut='5poubelle' AND auteurs.maj < $mydate"); AND auteurs.statut='5poubelle' AND auteurs.maj < $mydate");
$n+= optimiser_sansref('spip_auteurs', 'id_auteur', $res); $n+= optimiser_sansref('spip_auteurs', 'id_auteur', $res);
...@@ -322,11 +318,11 @@ function optimiser_base_disparus($attente = 86400) { ...@@ -322,11 +318,11 @@ function optimiser_base_disparus($attente = 86400) {
// //
# supprimer les messages lies a un auteur disparu # supprimer les messages lies a un auteur disparu
$res = spip_query("SELECT messages.id_message AS id $res = sql_select("messages.id_message AS id",
FROM spip_messages AS messages "spip_messages AS messages
LEFT JOIN spip_auteurs AS auteurs LEFT JOIN spip_auteurs AS auteurs
ON auteurs.id_auteur=messages.id_auteur ON auteurs.id_auteur=messages.id_auteur",
WHERE auteurs.id_auteur IS NULL"); "auteurs.id_auteur IS NULL");
$n+= optimiser_sansref('spip_messages', 'id_message', $res); $n+= optimiser_sansref('spip_messages', 'id_message', $res);
...@@ -338,47 +334,47 @@ function optimiser_base_disparus($attente = 86400) { ...@@ -338,47 +334,47 @@ function optimiser_base_disparus($attente = 86400) {
# les liens mots-articles sur des mots effaces # les liens mots-articles sur des mots effaces
$res = spip_query("SELECT mots_articles.id_mot AS id $res = sql_select("mots_articles.id_mot AS id",
FROM spip_mots_articles AS mots_articles "spip_mots_articles AS mots_articles
LEFT JOIN spip_mots AS mots LEFT JOIN spip_mots AS mots
ON mots_articles.id_mot=mots.id_mot ON mots_articles.id_mot=mots.id_mot",
WHERE mots.id_mot IS NULL"); "mots.id_mot IS NULL");
$n+= optimiser_sansref('spip_mots_articles', 'id_mot', $res); $n+= optimiser_sansref('spip_mots_articles', 'id_mot', $res);
# les liens mots-breves sur des mots effaces # les liens mots-breves sur des mots effaces
$res = spip_query("SELECT mots_breves.id_mot AS id $res = sql_select("mots_breves.id_mot AS id",
FROM spip_mots_breves AS mots_breves "spip_mots_breves AS mots_breves
LEFT JOIN spip_mots AS mots LEFT JOIN spip_mots AS mots
ON mots_breves.id_mot=mots.id_mot ON mots_breves.id_mot=mots.id_mot",
WHERE mots.id_mot IS NULL"); "mots.id_mot IS NULL");
$n+= optimiser_sansref('spip_mots_breves', 'id_mot', $res); $n+= optimiser_sansref('spip_mots_breves', 'id_mot', $res);
# les liens mots-forum sur des mots effaces # les liens mots-forum sur des mots effaces
$res = spip_query("SELECT mots_forum.id_mot AS id $res = sql_select("mots_forum.id_mot AS id",
FROM spip_mots_forum AS mots_forum "spip_mots_forum AS mots_forum
LEFT JOIN spip_mots AS mots LEFT JOIN spip_mots AS mots
ON mots_forum.id_mot=mots.id_mot ON mots_forum.id_mot=mots.id_mot",
WHERE mots.id_mot IS NULL"); "mots.id_mot IS NULL");
$n+= optimiser_sansref('spip_mots_forum', 'id_mot', $res); $n+= optimiser_sansref('spip_mots_forum', 'id_mot', $res);
# les liens mots-rubriques sur des mots effaces # les liens mots-rubriques sur des mots effaces
$res = spip_query("SELECT mots_rubriques.id_mot AS id $res = sql_select("mots_rubriques.id_mot AS id",
FROM spip_mots_rubriques AS mots_rubriques "spip_mots_rubriques AS mots_rubriques
LEFT JOIN spip_mots AS mots LEFT JOIN spip_mots AS mots
ON mots_rubriques.id_mot=mots.id_mot ON mots_rubriques.id_mot=mots.id_mot",
WHERE mots.id_mot IS NULL"); "mots.id_mot IS NULL");
$n+= optimiser_sansref('spip_mots_rubriques', 'id_mot', $res); $n+= optimiser_sansref('spip_mots_rubriques', 'id_mot', $res);
# les liens mots-syndic sur des mots effaces # les liens mots-syndic sur des mots effaces
$res = spip_query("SELECT mots_syndic.id_mot AS id $res = sql_select("mots_syndic.id_mot AS id",
FROM spip_mots_syndic AS mots_syndic "spip_mots_syndic AS mots_syndic
LEFT JOIN spip_mots AS mots LEFT JOIN spip_mots AS mots
ON mots_syndic.id_mot=mots.id_mot ON mots_syndic.id_mot=mots.id_mot",
WHERE mots.id_mot IS NULL"); "mots.id_mot IS NULL");
$n+= optimiser_sansref('spip_mots_syndic', 'id_mot', $res); $n+= optimiser_sansref('spip_mots_syndic', 'id_mot', $res);
...@@ -391,16 +387,14 @@ function optimiser_base_disparus($attente = 86400) { ...@@ -391,16 +387,14 @@ function optimiser_base_disparus($attente = 86400) {
# les liens mots-forum sur des forums effaces # les liens mots-forum sur des forums effaces
$res = spip_query("SELECT mots_forum.id_forum AS id $res = sql_select("mots_forum.id_forum AS id",
FROM spip_mots_forum AS mots_forum "spip_mots_forum AS mots_forum
LEFT JOIN spip_forum AS forum LEFT JOIN spip_forum AS forum
ON mots_forum.id_forum=forum.id_forum ON mots_forum.id_forum=forum.id_forum",
WHERE forum.id_forum IS NULL"); "forum.id_forum IS NULL");
$n+= optimiser_sansref('spip_mots_forum', 'id_forum', $res); $n+= optimiser_sansref('spip_mots_forum', 'id_forum', $res);
if (!$n) spip_log("Optimisation des tables: aucun lien mort"); if (!$n) spip_log("Optimisation des tables: aucun lien mort");
} }
?> ?>
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter