Solo 5 mil publicaciones y alrededor de 1 mil miembros
Todavía estoy esperando al importador del tablero principal para intentar y probar mi publicación de 18 metros en el foro.
¿Para Xenforo? Sí, tenemos otras importaciones masivas, pero es cierto que esto sería muy lento para 18 millones de publicaciones.
Estamos trabajando en nuestro propio importador masivo interno para 27 millones de publicaciones. El proceso pasó de poco más de una semana (sin contar los archivos adjuntos) a menos de un día con todo incluido. Ayer completamos nuestra primera prueba de importación sin ningún error. ¡Cosas realmente emocionantes!
Gracias, Justin. He echado un vistazo rápido; ¿te parece bien esto? (Si quieres, siéntete libre de añadirlo al importador oficial)
XENFORO_DB = "xenforo_db_3"
TABLE_PREFIX = "xf_"
BATCH_SIZE = 1000
ATTACHMENT_DIR = '/FULL/PATH/TO/attachments'
AVATAR_DIR = '/FULL/PATH/TO/avatars'
(Añadí la última línea^^ - significa que tendrás que copiar los avatares allí)
def execute
import_users
import_categories
import_posts
import_avatars
end
(Añadí la última línea^^)
def import_avatars
if AVATAR_DIR
users = User.all
users.each do |u|
unless u.custom_fields["import_id"].nil?
import_id = u.custom_fields["import_id"]
if import_id.to_i < 1000
dir_num = "0"
elsif import_id.to_i > 1000
dir_num = import_id.first
end
avatar_filename = "#{import_id}.jpg"
file_path = "#{AVATAR_DIR}/l/#{dir_num}"
file_path_and_name = "#{file_path}/#{avatar_filename}"
if File.exists?(file_path_and_name)
upload = create_upload(u.id, file_path_and_name, avatar_filename)
if upload.persisted?
u.import_mode = false
u.create_user_avatar
u.import_mode = true
u.user_avatar.update(custom_upload_id: upload.id)
u.update(uploaded_avatar_id: upload.id)
else
puts "Error: Upload did not persist for #{u.username} #{avatar_filename}!"
end
end
end
end
end
end
Es muy tarde aquí, así que es posible que haya cometido algunos errores o que haya omitido mucho, pero esto asume que todos los avatares son .jpg (lo cual parece ser el caso de todos los míos). No estaba muy seguro de los cambios de u.import_mode, así que simplemente los comenté.
Totalmente sin probar (son casi las 5 a.m. aquí
)
Hice una prueba en mi máquina de desarrollo con un foro de 100 mil publicaciones y tardó 90 minutos. El que quiero importar tiene varios millones de publicaciones, ¿quizás 10 veces más?
¡Genial! ¿Lo compartirán con nosotros? ¿Tienen alguna idea de cuándo?
El objetivo actual es asegurarnos de que funcione perfectamente y, una vez que nuestro sitio haya sido migrado, publicarlo eventualmente en el repositorio de Discourse para que otros puedan usarlo.
Una guía paso a paso también sería muy útil, por favor :).
Para 5.000 publicaciones y unas 600 adjuntos, en un Xeon más antiguo y un disco SSD, tardó unos 10 minutos. Te recomendaría conseguir un equipo con suficiente potencia, realizar la importación sin conexión y dejar que trabaje.
¡Fantástico! Estoy deseando.
Ok, he realizado una prueba muy rápida y las adiciones al script parecen haber funcionado. Ahora estoy haciendo una prueba adecuada con varios miles de miembros y 100 mil publicaciones. Informaré si funciona…
Hola, ¿hay algo nuevo? Si necesitas ayuda con las pruebas, estaré encantado de ayudarte.
Estoy obteniendo un error que indica que la tabla de usuarios no existe al ejecutar el script de XenForo. ¡Cualquier ayuda sería muy apreciada!
He estado leyendo sobre esto durante una hora, pero aún no he logrado resolverlo.
Hay algunas variables al principio del script que debes completar para que pueda conectarse a tu base de datos MySQL de xenForo y consultar los datos. Creo que “import_db” podría ser el valor marcador de posición; verifica que esos valores estén completos correctamente.
@Ghan pensé que estaba importando a import_db con esto: mysql -u root -p import_db < /shared/db.sql
Mi xenforo.rb es:
Ah, vale. Si ese es el nombre de tu base de datos, entonces verifica que el nombre de la tabla sea correcto. Es posible que tu tabla se llame xf_user con el prefijo, lo cual causaría un problema. También debería haber una variable TABLE_PREFIX en el script.
@Ghan ¡Gracias!
Por ahora, todavía estoy atascado en el script de importación.
Recorre usuarios y categorías sin problemas. Sin embargo, en la función import_posts, simplemente se queda colgada hasta que, después de algunas horas, se agota el tiempo.
Estoy comenzando a depurar esto simplemente imprimiendo los valores en import_posts:
Todos los mensajes de impresión después de la asignación de la variable results nunca se muestran.
Solo por si alguien está buscando importar un foro de vb3, esta guía podría ayudar si también tienes una licencia de Xenforo:
¿Este importador importa etiquetas de xenForo junto con los hilos a los que están adjuntas?
Siempre es una buena idea mirar el código fuente.
Creo que la respuesta es… sí (pero no estoy muy familiarizado con las estructuras de datos de Xenforo):
Así que, parece que al menos una vez importó algunas etiquetas para alguien bajo ciertas condiciones. Si tienes suerte, ¡también funcionará para ti!



