J'ai récemment remarqué que mon wp_options
la table semble être un peu grande. Il contient 1161 lignes et mesure environ 2,1 Mo.
J'ai installé Clean Options . Il semble que le développement s'est arrêté sur le plugin en 2010, mais il a quand même fait le travail.
J'ai maintenant une longue liste d'entrées potentiellement orphelines. Existe-t-il un moyen simple de les trier et de déterminer lesquels supprimer et lesquels conserver? En outre, cela pourrait-il être à l'origine de problèmes de performances avec le site Web?
Merci d'avoir lu, toutes les idées sont les bienvenues!
Mise à jour : Le plugin Clean Options a renvoyé quelques transitoires dans la liste, ce qui m'a amené à découvrir qu'il y a plusieurs centaines de fichiers transitoires dans le wp_options
table. Il y a tout un tas qui ressemble à:
_site_transient_browser_5728a0f1503de54634b3716638...
_site_transient_timeout_browser_03df11ec4fda7630a5...
_transient_feed_83dcaee0f69f63186d51bf9a4...
_transient_plugin_slugs
_transient_timeout_feed_83dcaee0f69f63186d51bf9a4b...
etc. Comme je l'ai dit, il y a plusieurs centaines de lignes qui ressemblent à ceci. Est-il sûr de simplement les vider?
Merci
Vous pouvez les vider en toute sécurité. Wordpress et certains plugins recréeront les transitoires selon les besoins. Un transitoire est plus ou moins la valeur stockée d'une requête complexe. Les résultats sont enregistrés sous forme de transitoire afin que le système n'ait pas pour effectuer une requête commune encore et encore, au lieu de cela, il recherche juste le transitoire s'il existe et n'a pas expiré. Bien sûr, faites une sauvegarde de votre base de données avant de faire un changement de peur que quelque chose ne tourne mal!
Après avoir tout sauvegardé, vous pouvez exécuter une instruction mysql comme celle-ci:
DELETE FROM `wp_options` WHERE `option_name` LIKE ('%\_transient\_%')
[EDIT: instruction corrigée avec des caractères d'échappement, après suggestion de commentaire]
Vous pouvez supprimer les transitoires car ils seront recréés. Il peut y avoir des accumulations de transitoires expirés en raison de situations d'échec ou de problèmes de conception avec certains plugins. Une façon d'y faire face est de supprimer les transitoires expirés tout en permettant aux courants de remplir leur fonction. La purge uniquement des transitoires expirés depuis quelques jours vous permet de surveiller les plugins entraînant des transitoires périmés et de prendre toute mesure pour résoudre les problèmes ou signaler des problèmes.
Ce qui suit trouvera toutes les tables d'options wp * dans la base de données et supprimera les cinq plus grandes options transitoires qui sont périmées depuis plus d'une semaine. Cela donne suffisamment de temps pour qu'un plugin supprime les options qu'il va purger lui-même.
#!/bin/bash
DBNAME="mydatabase"
DBUSER="${USER}"
DBPASSWD="secret"
MYSQLBIN=/usr/bin/mysql # OR MYSQLBIN=/usr/local/mysql/bin/mysql
MYSQL="${MYSQLBIN} -s -D ${DBNAME} -u ${DBUSER} -p${DBPASSWD}"
TMP=/var/tmp/
ENTRIES_FILE="${TMP}entries.$$"
# Find option tables
for OPTION_TABLE in $( echo 'show tables like "%wp%options";' | ${MYSQL} )
do
# Find up to five large long expired transients
${MYSQL} > ${ENTRIES_FILE} <<EOF
select option_name from ${OPTION_TABLE} where option_name in
(select concat("_transient",substr(option_name,19))
FROM ${OPTION_TABLE} WHERE option_name LIKE '_transient_timeout%' AND
option_value < UTC_TIMESTAMP() - INTERVAL 1 WEEK order by option_value)
order by length(option_value) desc limit 5;
EOF
for OPTION in $( < ${ENTRIES_FILE} )
do
echo Deleting ${OPTION} from ${OPTION_TABLE}
echo delete from ${OPTION_TABLE} where option_name = \"${OPTION}\"\; | ${MYSQL}
if [[ $? -eq 0 ]]; then
echo delete from ${OPTION_TABLE} where option_name = \"_transient_timeout${OPTION:10}\"\; | ${MYSQL}
fi
done
done
rm -f ${ENTRIES_FILE}
Installez le plugin Supprimer les transitoires expirés pour nettoyer automatiquement la base de données quotidiennement.