Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] chat php ajax .problema setInterval()

Estas en el tema de chat php ajax .problema setInterval() en el foro de Javascript en Foros del Web. hola amigos estoy trabajando en un chat de php ajax y mysql , en si el chat funciona pero solo 1 min ya que luego ...
  #1 (permalink)  
Antiguo 26/01/2014, 19:00
 
Fecha de Ingreso: enero-2014
Mensajes: 9
Antigüedad: 10 años, 3 meses
Puntos: 0
Pregunta chat php ajax .problema setInterval()

hola amigos estoy trabajando en un chat de php ajax y mysql , en si el chat funciona pero solo 1 min ya que luego se cae, pienso que el problema esta en la recargada de datos desde ajax mediante setInterval() , le he puesto en 2 segudnso y hasta en 5 pero el problema continua ya que tira el servidor y despues demora en poder funcionar nuevamente , este el el link del chat

http://www.webuplinksnow.com/AAACHAT/chatmau.php

el chat son solo 3 archivos este es la parte de php que llama a la BD:

function showmsg($selecionBD){ /* funcion mostrar*/
global $conn,$botname;
$consultaDt = mysql_query($selecionBD,$conn);

while($desde_db = mysql_fetch_array($consultaDt)){
$datos[] = $desde_db;
}
mysql_free_result($consultaDt);
@krsort($datos);
@reset($datos);
while (list($key, $row) = @each($datos)) {
$username = htmlentities($row["user"],ENT_QUOTES,"UTF-8");
$msg = htmlentities($row["mensaje"],ENT_QUOTES,"UTF-8");
if ($username == $botname) {
$username = "<b class='bot'>".$username."</b>";
}
?>
<span class="username"><?php echo $username;?>:</span> <span class="msg"><?php echo $msg;?></span><br />
<?php
}
mysql_close($conn);
}

if(isset($_POST['envio'])){
sleep(1);
CheckToClear($Select_tot);
mysql_query($insert1);

}
else if(isset($_POST['muestra'])){
flush();

showmsg($selecionBD);
}
...................
Este es el codigo ajax que recibe los datos:
var conexion;
function crearXMLHttpRequest() //crea nuevo objeto Ajax
{
var xmlHttp=null;
if (window.ActiveXObject)
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
else
if (window.XMLHttpRequest)
xmlHttp = new XMLHttpRequest();
return xmlHttp;
}
function Enviomsg() {
var evMsg = document.getElementById('textoChat').value;
conexion=crearXMLHttpRequest();
conexion.open('POST', 'datosmau.php?envio='+'ok&envia='+evMsg, true);
conexion.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
conexion.send('envio='+'ok&envia='+evMsg);
}

function Mostrar_msg() {
c = document.getElementById("Div_session");
conexion=crearXMLHttpRequest();
conexion.open("POST", 'datosmau.php?muestra=ok',true);
conexion.onreadystatechange = procesarEventos;
conexion.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
conexion.send('muestra=ok');
}


function procesarEventos() { //procesa los datos recibidos y envia el mensaje si esta logeado sino muestra ventana login
var i = "conectando...";
var div = document.getElementById('Div_session');

if( conexion.readyState == 4)
{
div.innerHTML = conexion.responseText;

}else{
div.innerHTML = i;
}
}
setInterval('Mostrar_msg()',5050);
---------------
y los muestra en otro archivo que tiene un div con el id "Div_session":

ALGUIEN SABE POR QUE PASA ESTO ??? O SI ME PUEDEN DECIR QUE DEFINITIVAMENTE NO ES POSIBLE HACERLO CON SETiNTERVAL() Y SI HAY ALGUNA SOLUCION LES AGRADECERIA MUCHO
  #2 (permalink)  
Antiguo 26/01/2014, 19:41
Avatar de EmpireFX  
Fecha de Ingreso: marzo-2008
Ubicación: in da house
Mensajes: 60
Antigüedad: 16 años, 1 mes
Puntos: 3
Respuesta: chat php ajax .problema setInterval()

Creo que el error esta en recrear varios objetos de crearXMLHttpRequest().
  #3 (permalink)  
Antiguo 27/01/2014, 15:57
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: chat php ajax .problema setInterval()

hay muchos errores, como por ejemplo no evaluar el XHR.status == 200 junto con el XHR.readyState ==4

pero el error más fundamental, es usar ajax, para lograr un chat optimo deben utilizarse técnicas como ajax longpolling, HTML5 WebSockets, SSE (no funciona en IE) o similares.
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #4 (permalink)  
Antiguo 28/01/2014, 19:26
 
Fecha de Ingreso: enero-2014
Mensajes: 9
Antigüedad: 10 años, 3 meses
Puntos: 0
Respuesta: chat php ajax .problema setInterval()

bueno gracias por contestar , le he puesto setInterval('funcion_mostrar()',4050)
y parece que quedo funcionando , sobre lo de usar ajax tendria que ver si seguir con el proyecto o cambiarlo por jax long...

Etiquetas: ajax-php-mysql, chat, setinterval
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:55.