deshabilite la verificación de publicaciones duplicadas en el complemento de wordpress wp-all-import

6 minutos de lectura

avatar de usuario
madriguera

Estoy usando el complemento wp all import wordpress para importar publicaciones a mi blog de wordpress desde un archivo csv. El archivo tiene más de 10000 publicaciones, el problema es que la publicación del complemento se vuelve más lenta a medida que aumenta el tamaño de la base de datos o si publica alrededor de 1000 publicaciones, la cantidad de publicaciones disminuye a 1/4 de la tasa cuando comenzó el proceso.

¿Es posible evitar la verificación de duplicados por parte del complemento?

¿O puedo limitar la lectura de datos de la base de datos de wordpress a 100 publicaciones en lugar de leer las 1000 publicaciones?

avatar de usuario
harry geo

parece que su servidor tiene problemas ya que esta operación requiere muchos recursos. Enviar todas estas consultas SQL en su base de datos seguramente ralentizará las cosas en su servidor. Podrías probar algunas cosas y ver si te ayuda.

  • Intente dividir el script en partes y analice una pequeña cantidad de publicaciones a la vez (por ejemplo, 1000).
  • Deshabilitar do_action
  • Intente aumentar el tiempo de ejecución de los scripts php (es poco probable que esto ayude, pero si nada ayuda, pruébelo).
  • Importe una copia de seguridad del archivo sql directamente en su base de datos utilizando un DBMS (Mysql Workbench, PgAdmin, etc.) e importe el archivo xml que asigna la base de datos con las publicaciones. Más información:

Sobre WP toda la importación aquí

Sobre Copias de seguridad de WordPress aquí

  • Buena respuesta. No hay necesidad de profundizar en el complemento para hacer esto… ajustar la configuración disponible en el Administrador debería ser suficiente.

    – rnevio

    16 de abril de 2015 a las 7:14

  • No funciona muy bien para mí. He modificado un poco el complemento y puedo reducir el tiempo en 1/10.

    – Junio

    17/04/2015 a las 11:35

  • Su mejor opción es exportar el archivo sql usando un DBMS como MySQL Workbench, phpmyadmin, etc. e importarlo a su nueva base de datos. Luego, exporte las publicaciones dentro de wp-admin> Herramientas> Exportar y luego impórtelo en su otra instalación de wp. También puedes intentar usar Duplicador un complemento útil que empaqueta todo su sitio web en un archivo comprimido y usa un install.php que maneja todo automáticamente.

    – Harry Geo

    17 de abril de 2015 a las 12:55

avatar de usuario
Breve Tiw

En realidad, hay un filtro que hace esto ahora. De esta manera, debería permanecer cuando el complemento se actualice. No tendrá que usar un ‘Hack’ como se describe en la respuesta seleccionada actual.

apply_filters('wp_all_import_is_check_duplicates', true, $this->id);

Entonces puede escribir una función como esta para evitar la verificación de registros duplicados. Agréguelo a su archivo functions.php o a su complemento.

//My Custom FILTER to Disable checking for duplicates
add_filter('wp_all_import_is_check_duplicates', 'disable_check_dupe_func', 10,     2);

//My Custom FUNCTION to Disable checking for duplicates
function disable_check_dupe_func($truefalse, $thisid){
    $truefalse = false;
    return $truefalse;
}//disable_check_dupe_func($truefalse, $thisid){

Estoy usando la versión Pro, por lo que si este filtro no está en la versión gratuita, cambiaré la respuesta.

Aquí están mis resultados. Mi archivo tenía 100.000 registros. No tuve necesidad de buscar duplicados. Asegúrese de comprender las implicaciones de esto antes de aplicar este filtro.

Antes aplicar filtro: 18 minutos 36 segundos – 25% ~25,000 registros – Lo cancelé a propósito.

ingrese la descripción de la imagen aquí

Después aplicar filtro: 10 minutos 37 segundos – 27% ~27,000 registros

10 minutos 37 segundos - 27% ~27,000 registros

Tiempo total de ejecución terminó siendo: 36 minutos 23 segundos – 100% 100,000 registros.
ingrese la descripción de la imagen aquí

Así que para mí ahorró mucho tiempo.

El problema

Esta ralentización con el tiempo es un problema conocido, y se documenta una explicación en el sitio web del complementocon las partes más relevantes reproducidas a continuación.

Dividir un archivo en fragmentos es una forma útil de reducir la cantidad de ralentización de WP All Import al final del proceso de importación.

El motivo de la ralentización se debe en parte a que WP All Import debe leer más en el archivo más adelante en el proceso de importación. En cada iteración, el “puntero de archivo” se restablece.

[…] Durante las últimas iteraciones, por ejemplo, al importar registros 15000 – 16000, WP All Import debe leer 15000 registros en el archivo antes de que pueda comenzar a importar los datos.

Dividir el archivo en partes evita esta ralentización, pero tiene un costo: debe crear temporalmente muchos archivos nuevos en su servidor.

[…]

No es posible eliminar por completo la ralentización, porque a medida que su base de datos crece, su servidor y WP All Import deben hacer más trabajo.

con el ejemplo que mencionaste sobre los duplicados.

Soluciones

do_action

Como se mencionó anteriormente, dividir el archivo de importación en partes ayudará a aliviar la ralentización.

La página vinculada también describe que el complemento ha sido diseñado para funcionar sin llamar do_actiony se recomienda que esté deshabilitado, siempre que no sea necesario que otros complementos o procesos lo utilicen.

… creamos una versión de esta función sin ninguna de las llamadas do_action, y al marcar esta casilla, WP All Import usará nuestra función personalizada wp_insert_post en lugar de la predeterminada proporcionada por WordPress.

La casilla de verificación mencionada está disponible bajo el título “Configurar ajustes avanzados” en el paso 4 de la importación.

Deshabilitar la verificación de publicaciones duplicadas

No pude encontrar un valor de configuración para hacer esto, por lo que tuve que recurrir a editar el código fuente del complemento para lograrlo.

Abre el archivo /wp-content/plugins/wp-all-import/models/import/record.php y haz una búsqueda de “// if Auto Matching re-import option selected“, que debe ser la línea 739, e ingrese /* para iniciar un comentario de bloque desde la línea superior. Luego, desplácese hacia abajo hasta la línea 807 (justo arriba de “// Duplicate record is founded“) y entrar */ para finalizar el comentario del bloque. Esto evitará que el proceso de importación busque publicaciones duplicadas y debería acelerarlo considerablemente con importaciones grandes. Se ha verificado que esto no causa ningún error en la última versión del complemento gratuito (aparte de las duplicaciones obvias en caso de que surjan), pero no tengo un conjunto de datos lo suficientemente grande como para probar aumentos de rendimiento confiables.

Vale la pena señalar que se trata de un “truco”, los cambios realizados se revertirán en cualquier actualización del complemento y no debe considerarse una solución estable.

  • Eso es exactamente lo que hice (el truco) y me ayudó a aumentar la velocidad como comenté en la respuesta anterior.

    – Junio

    21 de abril de 2015 a las 18:24

  • @junio ¿Y todavía se ralentiza proporcionalmente a la cantidad de publicaciones ingresadas? Eso es irritante. Me pregunto si lleva a cabo otras comprobaciones de O(n) en cualquier lugar

    – enigma

    21/04/2015 a las 20:25

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad