¿Puedo eliminar transitorios en la tabla de opciones de wp de mi instalación de WordPress?
Recientemente he notado que mi tabla wp_options
parece ser un poco grande. Contiene 1161 filas y tiene aproximadamente 2.1 mb de tamaño.
He instalado Opciones limpias. Parece que el desarrollo se detuvo en el plugin en 2010, pero todavía hizo el trabajo.
Ahora tengo una larga lista de entradas potencialmente huérfanas. ¿Hay una manera fácil de ordenar estos, y averiguar cuál eliminar y cuál conservar? Además, ¿podría esto ser responsable de causar el rendimiento problemas con el sitio web?
Gracias por leer, cualquier idea es bienvenida!
Actualizar: El complemento Opciones limpias devolvió algunos transitorios en la lista, lo que me llevó a descubrir que hay varios cientos de archivos transitorios en la tabla wp_options
. Hay un montón que se parecen a:
-
_site_transient_browser_5728a0f1503de54634b3716638...
_site_transient_timeout_browser_03df11ec4fda7630a5...
_transient_feed_83dcaee0f69f63186d51bf9a4...
_transient_plugin_slugs
_transient_timeout_feed_83dcaee0f69f63186d51bf9a4b...
Y así sucesivamente. Como dije, hay varios cientos de filas que toman mira así. ¿Es seguro simplemente tirarlos?
Gracias
2 answers
Puedes volcarlos de forma segura. Wordpress y algunos plugins recrearán transitorios según sea necesario. Un transient es más o menos el valor almacenado de una consulta compleja. Los resultados se guardan como un transitorio para que el sistema no tenga que realizar una consulta común una y otra vez, en su lugar solo busca el transitorio si existe y no ha expirado. Por supuesto, hacer una copia de seguridad de su base de datos antes de hacer un cambio para que algo salga mal!
Después de hacer una copia de seguridad de todo, puede ejecutar un declaración mysql como esta:
DELETE FROM `wp_options` WHERE `option_name` LIKE ('%\_transient\_%')
[EDITAR: sentencia corregida con caracteres de escape, después de sugerencia de comentario]
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-01-14 11:05:59
Puede eliminar los transitorios ya que se recrearán. Puede haber acumulaciones de transitorios caducados debido a situaciones de falla o problemas de diseño con algunos complementos. Una forma de hacer frente a esto es eliminar transitorios caducados mientras permite que los actuales realicen su función. Purgar solo los transitorios que están caducados durante unos días le da la oportunidad de monitorear qué complementos están resultando en transitorios obsoletos y tomar cualquier acción para solucionar problemas o informar problemas.
La siguiente voluntad encuentre cualquier tabla de opciones wp * en la base de datos y elimine las cinco opciones transitorias más grandes que están obsoletas por más de una semana. Esto da el tiempo suficiente para que cualquier plugin para eliminar opciones que van a purgar a sí mismos.
#!/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}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-02-29 14:17:53