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