Ver Mensaje Individual
  #19 (permalink)  
Antiguo 14/09/2013, 12:44
ocp001a
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 16 años, 7 meses
Puntos: 528
Respuesta: Al cargar el div con ajax, la escritura se detiene hasta que carga

Cita:
Iniciado por PHPeros Ver Mensaje
Una buena idea para ahorrar espacio sería almacenar el html/texto extraído de la db en una variable, luego borrar el registro y hacer el echo de la variable. De otra forma cuando el usuario actualice los mensajes se irán o quedarán cacheados si lo indicamos. ¿Que opinais?
Depende de qué se quiera lograr, pero entonces colocarías la conversación de todos los usuarios en sesión, lo que va a aumentar estos archivos, no creo que sea práctico.



En mi aplicación, los mensajes se almacenan en forma de texto plano con la menor cantidad de datos (fecha, usuario origen, destino, mensaje y estado)

Un script en js se encarga de gestionar el estilo y colores de la conversación, esto evita guardar html en la bd, y acelera las respuestas.

Por defecto cuando el usuario está en el chat sólo se le muestran los mensajes no leídos, y tiene un botón que le puede mostrar toda la conversación. Si el usuario cierra el navegador, a la siguiente vez que entra verá las conversaciones en limpio, salvo que recupere la conversación que quiera.

Dado que mi aplicación es para una intranet y la empresa tiene cierta paranoia, no se borra ningún mensaje, por lo que para acelerar las consultas hay dos tablas, una tabla histórica con todos los mensajes anteriores al día actual y la del día actual. Por defecto sólo se consulta la tabla del día actual. Si se pide el histórico, se une el resultado de ambas tablas. Por las noches un cronjob pasa el contenido de la tabla del día a la tabla histórica, por lo que la tabla del día actual amanece limpia diariamente.

Con todo esto, y pese a que la empresa tiene más de 100 usuarios conectados al mismo tiempo (de una plantilla de 400 empleados) la tabla del chat durante todo 2012 no pasó de 80 mb.