Comunidad de diseño web y desarrollo en internet online

setInterval tumba conexion

Citar            
MensajeEscrito el 03 Oct 2013 04:31 pm
hola

he hecho una especie de chat sencillo y uso la funcion setInterval para saber que agente esta conectado :

PHP:

Código PHP :


<?
                    
                    $sql_grupo = "SELECT * FROM agentes";
                                        
                    $query_sql_grupo = mysql_query($sql_grupo);
                    
                    
                    for ( $i=0;$i<mysql_num_rows($query_sql_grupo);$i++ ){
                        
                    $token = substr(md5(rand()),0,10);
                    
                    ?>
                    
                    
                    <div style="border-right:1px solid #CCC; width:200px; height:130px; float:left; padding:5px; display:inline-block; margin-left:20px; margin-top:15px" align="left">
                    
                    <?
                    
                    $conexion = new ConexionBaseDatos;
                            $link = $conexion->Conectarse($conexion);
                            
                            $id = mysql_result($query_sql_grupo,$i,"id_trab");
                            
                            $sql = "SELECT * FROM trabajadores WHERE id = '$id'";
                                        
                            $query_sql = mysql_query($sql);
                            
                            
                        echo "<div class='foto_tecnico3' align='left'><img src='../WebAdmin/archivos/fotos/trabajadores/".mysql_result($query_sql,0,"foto")."' width='70' height='80' /></div>";
                                                                
                            echo "<div class='nom_tecnico3' align='center'>".mysql_result($query_sql, 0, 'p_nombre')." ".mysql_result($query_sql, 0, 'p_apellido')."</div>";
                            
                            
                            $sql_sum = "SELECT count(puntaje) as cont, sum(puntaje) as su from puntaje_trabajadores WHERE id_trabajador = '".mysql_result($query_sql, 0, 'id')."'";
                    
                            $query_sql_sum = mysql_query($sql_sum);
                            
                            $su = mysql_result($query_sql_sum,0,"su");
                            
                            $cont =  @mysql_result($query_sql_sum,0,"cont");
                            
                            @$total = $su / $cont;
                            
                            
                            
                            echo "<div id='casos_chat'  align='center'><span style='color:#333; font-style:italic; font-weight:bold'>".$cont." Casos</span></div>"; 
                            
                            
                            
                            if ( $cont == 0 ){ ?>
                            
                            <div id="rating3">
                            
                                <div id="rat1" class="rating1"></div>
                                <div id="rat2" class="rating2"></div>
                                <div id="rat3" class="rating3"></div>
                                <div id="rat4" class="rating4"></div>
                                <div id="rat5" class="rating5"></div>
                            
                            </div>
                            
                            <?php } ?>    
                            
                            
                            
                            <?php if ( $total >= 1 && $total < 2 ){ ?>
                            
                            <div id="rating3">
                            
                                <div id="rat1" class="rating11"></div>
                                <div id="rat2" class="rating2"></div>
                                <div id="rat3" class="rating3"></div>
                                <div id="rat4" class="rating4"></div>
                                <div id="rat5" class="rating5"></div>
                            
                            </div>
                            
                            <?php } ?>
                            
                            <?php if ( $total >= 2 && $total < 3 ){ ?>
                            
                            <div id="rating3">
                            
                                <div id="rat1" class="rating11"></div>
                                <div id="rat2" class="rating22"></div>
                                <div id="rat3" class="rating3"></div>
                                <div id="rat4" class="rating4"></div>
                                <div id="rat5" class="rating5"></div>
                            
                            </div>
                            
                            <?php } ?>
                            
                            <?php if ( $total >= 3 && $total < 4 ){ ?>
                            
                            <div id="rating3">
                            
                                <div id="rat1" class="rating11"></div>
                                <div id="rat2" class="rating22"></div>
                                <div id="rat3" class="rating33"></div>
                                <div id="rat4" class="rating4"></div>
                                <div id="rat5" class="rating5"></div>
                            
                            </div>
                            
                            <?php } ?>
                            
                            <?php if ( $total >= 4 && $total < 5 ){ ?>
                            
                            <div id="rating3">
                            
                                <div id="rat1" class="rating11"></div>
                                <div id="rat2" class="rating22"></div>
                                <div id="rat3" class="rating33"></div>
                                <div id="rat4" class="rating44"></div>
                                <div id="rat5" class="rating5"></div>
                            
                            </div>
                            
                            <?php } ?>
                            
                            <?php if ( $total == 5 ){ ?>
                            
                            <div id="rating3">
                            
                                <div id="rat1" class="rating11"></div>
                                <div id="rat2" class="rating22"></div>
                                <div id="rat3" class="rating33"></div>
                                <div id="rat4" class="rating44"></div>
                                <div id="rat5" class="rating55"></div>
                            
                            </div>
                            
                            <?php } ?>
                    
                    <br />
                    
                    <? $token = substr(md5(rand()),0,10); ?> 
    
                    <script>
                    
                        $(document).ready(function() {   
                          
                                
                            //setInterval("actualizar('<? echo $token; ?>','<? echo mysql_result($query_sql_grupo,$i,"id"); ?>')", 2000 );   
                                   
                                        
                        }); 
                    
                    </script>
                    
                    <br />
                    
                   
                    
                    <div id="iniciar<?  echo $token; ?>">
                    
                        <a href="chat.php?id=<? echo mysql_result($query_sql_grupo,$i,"id"); ?>" target="_blank"><img src="img/conectado.fw.png" title="Conectado" /></a>
                    
                    </div>
                    
                    
                    <div id="noiniciar<?  echo $token; ?>" style="color:#F00">
                    
                        <img src="img/noconectado.fw.png" title="No Conectado" />
                    
                    </div>
                    
                    
                    <br />
                    
                   
                    
                    
                    
                    
                    </div>
                    
                    <? } ?>





Jquery:


Código Javascript :

function actualizar(token,id){   
                
                    var str = "id="+id;
 
                    
                    
                    
                    $.ajax({
            
            
                        type: 'POST',
            
            
            
                        url: 'VerificarStatus.php',
            
                        
            
                        data: str,
            
            
            
                        success:function(msg){
            
            
            
                                    if ( msg == 0){
                                    
                                        $("#noiniciar"+token).fadeIn(); 
                                        $("#iniciar"+token).fadeOut();
                                        
                                    }
                                    
                                    if ( msg == 1){
                                    
                                        $("#iniciar"+token).fadeIn();   
                                        $("#noiniciar"+token).fadeOut();
                                        
                                    }
              
                    
                        }
            
            
            
                    });
 
                
                
                }






el problema es que esa función setInterval me tumba la conexión al hosting, osea que la pagina se cae y todo lo que esta dentro del hosting también.

porque sucede esto ?

el detalle es que necesito usar esa función para saber si cada agente esta conectado en el momento y recargar su estado automáticamente.

si alguien me pudiese ayudar se lo agradeceria

Por kakashi20

43 de clabLevel



 

chrome
Citar            
MensajeEscrito el 04 Oct 2013 05:15 am
Hola kakashi20, setInterval es malo, utiliza mejor setTimeout

Por alejandroC

34 de clabLevel



 

firefox
Citar            
MensajeEscrito el 04 Oct 2013 05:20 am
a mi me ha pasado que setInterval se ejecuta múltiples veces, talves eso hace que se tumbe la conexión, y setTimeout es constante

Por alejandroC

34 de clabLevel



 

firefox
Citar            
MensajeEscrito el 04 Oct 2013 03:56 pm
gracias por la ayuda..

mi duda es que setInterval hace ejecutar la función cada cierto tiempo ( automáticamente ) pero setTimeout hace esto también ?
lo cual es lo que necesito.

gracias

Por kakashi20

43 de clabLevel



 

chrome
Citar            
MensajeEscrito el 04 Oct 2013 04:06 pm

kakashi20 escribió:

gracias por la ayuda..

mi duda es que setInterval hace ejecutar la función cada cierto tiempo ( automáticamente ) pero setTimeout hace esto también ?
lo cual es lo que necesito.

gracias


No, no lo hace.
setTimeout se ejecuta una sola vez al concluir el tiempo que le pongas. Lo que debes hacer es dentro de la función que se ejecuta volver a ejecutar el mismo setTimeout.

Esta sería una forma de hacerlo:

Código HTML :

<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="utf-8">
<script type="text/javascript">
var t = 0;
var mifuncion = function () {
   t++;
   document.getElementById('segundos').innerHTML = t;
   setTimeout(mifuncion,1000);
}

setTimeout(mifuncion,1000);
</script>
</head>
<body>
<span id="segundos">0</span>
</body>
</html>

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 04 Oct 2013 08:29 pm
muchas gracias por la ayuda

Por kakashi20

43 de clabLevel



 

chrome
Citar            
MensajeEscrito el 22 Oct 2013 08:36 pm

kakashi20 escribió:

muchas gracias por la ayuda

Por kakashi20

43 de clabLevel



 

chrome
Citar            
MensajeEscrito el 22 Oct 2013 08:37 pm
hola

la funcion setTimeOut que dice DriverOp también tumba la conexión cada 1 segundo

alguien me puede ayudar.

gracias

Por kakashi20

43 de clabLevel



 

chrome
Citar            
MensajeEscrito el 23 Oct 2013 04:02 pm
Bueno, vas a tener que especificar qué quieres decir con "tumba la conexión".

Y otro detalle, el método explicado hasta aquí sirve para pocos clientes. Si tienes 10, 50 o mil clientes conectados al mismo tiempo, con un segundo de intervalo, estás floodeando el servidor, ni hablar.

Me parece que vas a tener que implementar algo más sofisticado como actualizaciones push. O replantearte todo el sistema...

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 23 Oct 2013 10:26 pm
que pasaría si en vez de una BD, utilizo un archivo plano .txt como almacenamiento ?

habría mejor rendimiento ?

Por kakashi20

43 de clabLevel



 

chrome
Citar            
MensajeEscrito el 24 Oct 2013 04:05 pm
Dependerá de qué tan frecuentemente actualices los datos en la DB y consecuentemente la frecuencia de modificar el txt.

Por DriverOp

Claber

2510 de clabLevel



 

opera

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.