Ich habe kürzlich bemerkt, dass meine wp_options
- Tabelle ein bisschen groß zu sein scheint. Es enthält 1161 Zeilen und ist ca. 2,1 MB groß.
Ich habe Clean Options installiert. Es sieht so aus, als ob die Entwicklung des Plugins im Jahr 2010 gestoppt wurde, aber es hat immer noch funktioniert.
Ich habe jetzt eine lange Liste potenziell verwaister Einträge. Gibt es eine einfache Möglichkeit, diese zu sortieren und herauszufinden, welche zu entfernen und welche zu behalten sind? Könnte dies auch für Leistungsprobleme bei der Website verantwortlich sein?
Vielen Dank für das Lesen, alle Ideen sind willkommen!
Update : Das Plugin Clean Options hat einige Transienten in der Liste zurückgegeben, was mich dazu veranlasste, festzustellen, dass der wp_options
Tabelle. Es gibt eine ganze Reihe, die so aussehen:
_site_transient_browser_5728a0f1503de54634b3716638...
_site_transient_timeout_browser_03df11ec4fda7630a5...
_transient_feed_83dcaee0f69f63186d51bf9a4...
_transient_plugin_slugs
_transient_timeout_feed_83dcaee0f69f63186d51bf9a4b...
und so weiter. Wie gesagt, es gibt mehrere hundert Zeilen, die so aussehen. Ist es sicher, sie einfach wegzuwerfen?
Vielen Dank
Sie können sie sicher entsorgen. Wordpress und einige Plugins erstellen Transienten nach Bedarf neu. Ein Transient ist mehr oder weniger der gespeicherte Wert einer komplexen Abfrage. Die Ergebnisse werden als Transient gespeichert, so dass das System keine hat Wenn Sie eine häufige Abfrage immer wieder durchführen möchten, wird stattdessen nur nach dem Transienten gesucht, der vorhanden und noch nicht abgelaufen ist. Erstellen Sie natürlich eine Sicherungskopie Ihrer Datenbank, bevor Sie Änderungen vornehmen, damit nichts schief geht!
Nachdem Sie alles gesichert haben, können Sie eine mysql-Anweisung wie folgt ausführen:
DELETE FROM `wp_options` WHERE `option_name` LIKE ('%\_transient\_%')
[EDIT: Anweisung mit Escape-Zeichen nach Kommentarvorschlag behoben]
Sie können Transienten löschen, da sie neu erstellt werden. Aufgrund von Ausfallsituationen oder Entwurfsproblemen bei einigen Plug-ins können abgelaufene Transienten auftreten. Eine Möglichkeit, damit umzugehen, besteht darin, abgelaufene Transienten zu entfernen, während die aktuellen ihre Funktion ausführen können. Wenn Sie nur Transienten löschen, die für einige Tage abgelaufen sind, können Sie überwachen, welche Plugins zu veralteten Transienten führen, und Maßnahmen ergreifen, um Probleme zu beheben oder Probleme zu melden.
Im Folgenden werden alle wp * -Optionstabellen in der Datenbank gefunden und die fünf größten vorübergehenden Optionen gelöscht, die mehr als eine Woche alt sind. Dies gibt genug Zeit, damit jedes Plugin Optionen löscht, die es selbst löschen wird.
#!/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}
Installieren Sie das Plugin Delete Expired Transients , um die Datenbank täglich automatisch zu bereinigen.