Publicado el Jueves 31 de Mayo del 2007 @ 4:14 por Armonth.
En el foro de Xeoweb han escrito un hilo pidiendo ayuda porque su foro en phpBB se ha hecho lento y le ha saturado el hosting lo cual no hace mucha gracia.
Yo hace tiempo que no uso phpBB, prefiero otros: SMF para los que quieren un foro “clásico”, Vanilla también es muy bueno aunque se usa de forma un poco menos “habitual”, InvisionBoard tiene la pega de ser “comercial” pero bueno o últimamente bbPress pega fuerte y su fácil integración con WordPress (no en vano son de los mismos) es un plus.
Con tantas alternativas, como ya he dicho, hace tiempo que no uso phpBB pero por aquí todavía conservo algunos consejos sobre cómo optimizarlo para que no se sature tan fácilmente, he cogido el texto, le he sacado las telarañas y añadido referencias.
El pruning o “purgado” es el sistema por el cual los hilos sin respuestas pasados X días son borrados, no afecta a las estadísticas globales del foro y aunque no es la mejor solución (si te interesa mantener un “archivo” del foro) puede ser la única solución llegado a cierto punto.
Para ello miramos las celdas de un foro y pulsamos en el desplegable “Ver foro” (o “Observar foro” dependiendo de la versión) ahí te aparecerá una opción para poder purgar todos los mensajes más viejos de “X” días.
Las tablas phpbb_search_wordlist y phpbb_search_wordmatch son el gran “problema” de phpBB: pueden ocupar tranquilamente 2/3 partes de la base de datos.
Su función no es otra que conservar una lista de palabras para que la función de búsqueda funcione. Aquí tenemos dos opciones:
Borrar el contenido de las tablas: las búsquedas dejarán de funcionar con hilos viejos (anteriores al borrado) pero liberarás mucho espacio.
Usar Rebuild Search Index: Rebuild Search Index es un hack muy sencillo de instalar que intenta rehacer el índice de búsquedas que, en algunos casos, reduce el tamaño de esas dos tablas a la mitad.
(Opcionalmente) No permitir búsquedas a usuarios no registrados: personalmente no me gusta la idea pero la cantidad de spammers que buscan hilos en un foro no es nada despreciable, normalmente tiran de Google pero a menudo no es así.
En éste otro hilo comentan la posibilidad de comprimir las tablas posts_text y search_wordlist usando MySQL:
ALTER TABLE phpbb_search_wordlist PACK_KEYS=1 DELAY_KEY_WRITE=1;
El precio “a pagar” es que al escribir un hilo o hacer una búsqueda será un poquito más lento.
Esto es general para cualquier aplicación que use MySQL, pero mediante MySQl se pueden optimizar las tablas de vez en cuando, el propio phpMyAdmin al seleccionar una o varias tablas tiene la opción “Optimizar / Optimize”.
eXtreme Styles mod for phpBB 2.0.x me lo han recomendado por varios sitios por los dos primeros puntos que ofrece:
- Increases speed of phpBB template system by replacing template compilation algorythm with much faster one.
- Templates cache that allowes you to speed up forum by caching compiled templates.
Por último, existe un largo hilo (60 páginas, empezado hace 4 años y continua activo) que nos propone una serie de cambios a realizar para foros MUY grandes (50.000 posts por día).
Y terminando el tema, cabe decir que si bien phpBB 2.x no es muy rápido (ya digo, prefiero las otras alternativas) nada que comparar si lo optimizas “un poco” — sin matarse — con la nueva rama phpBB 3.x: la parte de MySQL parece mucho más rápida pero la parte de PHP, al menos de momento, es un agujero de recursos :.
Se aceptan, como siempre, otras alternativas e ideas…
Saludos Armonth,
Como sabrás, este artículo me viene de perlas, muchas gracias.
Al leer esto me surge una duda (entre tantas…) y es tema del borrado de las tablas de busqueda. Nos comentas que si eliminamos su contenido podemos disminuir la carga pero perdiendo la posibilidad de encontrar los mensajes anteriores al borrado.
La pregunta es, no es posible en lugar de eliminar su contenido, eliminar tan solo algunas de las entradas? Por ejemplo, las palabras “no clave” en la tabla WordList?
EL eXtreme Styles mod es la piedra angular de la optimización en foros con un alto número de visitas, la opción de cachear los themes y de poder editarlos desde la propia web son una ayuda MUY valiosa.
EN las Jornadas de SOftware Libre del año pasado en Asturias, Raúl Rivero, en aquel entonces director técnico del diario el mundo no habló de como tienen todo allí montado. Pues bien, al parecer phpBB2 para las busquedas recoge los resultados y los mete en una tabla nueva… o similar. No recuerdo bien, pero el caso es que como el decía, cuando tienes 800 post vale, peor cuando tienes muchísimos más es insonstenible. Ellos lo modificaron y se lo enviaron pero al parecer rechazaron el parche.
Estaba buscando donde bajar el rebuild search pero no lo habia encontrado.
Tienen idea de cuando salga una version estable de phpbb3? Se ve muy bien.
Muy interesante Armonth, gracias.
Si, he probado en un foro de prueba a eliminar solo algunas de las entradas de la tabla de palabras word_list, pero veo que apesar de borrarlas se sigue haciendo referencia a ellas en la tabla de búsquedas… además, en cuanto se escriba un mensaje nuevo con esas palabras que yo borre todo seguirá como antes…
Voy a ponerme las pilas en lo que me comentas de extreme stles. Pero antes quería pregunta una cosa.
No es posible crear manualmente una lista de palabras clave y que sean solo estas las que se tengan en cuenta? De este modo, la tabla word_list solo tendría las palabras clave relacionadas con la tematica de mi foro, y en la tabla de busquedas solo apareceria para cada mensaje esas palabras, si es que las tiene…
No tengo mucha idea de bases de datos, como puedes ver.. paree logico que se pudiera lograr, no? o no merece la pena?
En fin, mientras voy a estudiar lo del extreme style.
Mil gracias a todos por vuestro apoyo y comentarios.
Hola
Yo tengo un foro de fútbol (phpBB2 hasta hace un par de semanas) que está creciendo relativamente bien, lo tengo en Dreamhost y de vez en cuando miro la carga Mysql. Lo migré hace cosa de 15 días a phpBB3 y os puedo decir que la carga ha bajado un poco cuando las visitas siguen subiendo. Ahí queda mi experiencia.
Un saludo