¿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

Author: Ryan, 2012-05-03

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]

 120
Author: Lane,
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}
 2
Author: ClearCrescendo,
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