Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Comporbacion/Ejecucion automatica de funciones PHP con AJAX

Estas en el tema de Comporbacion/Ejecucion automatica de funciones PHP con AJAX en el foro de Frameworks JS en Foros del Web. Buenas tardes. Llevo un tiempo buscando por el foro y por google y no doy con lo que neceito, asi q a ver si preguntandolo ...
  #1 (permalink)  
Antiguo 29/05/2008, 09:46
 
Fecha de Ingreso: junio-2005
Mensajes: 20
Antigüedad: 18 años, 10 meses
Puntos: 0
Comporbacion/Ejecucion automatica de funciones PHP con AJAX

Buenas tardes. Llevo un tiempo buscando por el foro y por google y no doy con lo que neceito, asi q a ver si preguntandolo salgo de dudas.

Para el desarrollo que estoy llebando a cabo me gustaria disponer de una especie de "zonas calientes" que se autocomporbasen a si mismo.
Algo asi como que dichas zonas comporbasen una determinada variable y pintasen en cada momento su valor, pero que la comporbacion se desencadenase automaticamente.
Algo asi como ocurre cuando te llega un nuevo correo a una cuenta de gmail, que no se necesita recargar la web, ésta se recarga ella sola cuando detecta que llega un nuevo mensaje.

Os explico un pequeño resumen de cual es mi estructura.
Dispongo de una web normal con esta estructura
Código:
<html>
<head> ... </head>
<body>
....
<?php
funcion();
?>
...
</body>
Esa funcion devuelve un valor dependiendo de una serie de acciones, supongamos por ejemplo
Código:
function funcion(){
	return $_SESSION['contador']++;
}
Y ademas se dispone de otra funcion que modifica el valor de dicha variable de sesion
Código:
function funcion2(){
	$_SESSION['contador']=2;
}
Cone sto se conseguiria que, de poderse hacer esa consulta automatica a la funcion "funcion()", si desde otra parte de la web, bajo la misma sesion se accediera a "funcion2()", el valor a mostrar en la web cambiaria automaticamente.

No se si me he explicado con claridad, pero vamos, el ejemplo de la llegada de correos a gmail es exactamente lo que busco.
Como hacer eso con PHP y AJAX, con algun framework o con algo que se lo parezca.
Lo mas importante es que dicha ejecucion o comprobacion, se debe hacer sde manera trasparente, sin intervencion de usuario.

Esa idea de "zonas calientes" que ejecuten algo, bien sea una comporbacion o la ejecucion de algo, me parece algo que cae dentro de las funcionalidades aplicadas de ajax y me ha extrañado no encontar nada.

He porbado a usar algo como esto:
Usar javascript para la ejecucion de un fichero php que contiene la funcion "funcion()"
Código:
 function objetoAjax(){
  var xmlhttp=false;
  try {
   xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
  } catch (e) {
   try {
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
   } catch (E) {
    xmlhttp = false;
   }
  }
  if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
   xmlhttp = new XMLHttpRequest();
  }
  return xmlhttp;
 }

 function funcion(){

  divResultado = document.getElementById('res');
  //divResultado.innerHTML= '<img src="./load.gif"> <b>Verificando la existencia del fichero</b>.';
  var ruta='./fichero_php_con_funcion.php';     //  <------ FICHERO CON funcion()

  ajax=objetoAjax();
  ajax.open("GET", ruta);
  
  ajax.onreadystatechange=function() {
   if (ajax.readyState==4) {
	divResultado.innerHTML = ajax.responseText
   } else {
   }
  }
  ajax.send(null) 
  setTimeout("funcion()",1000);   <--- LLAMADA AUTOMATICA A SI MISMA
 }
Y en la web llamar a este script de javascript
Código:
<html>
<head> ... </head>
<body>
....
<script>
funcion();
</script>
...
</body>
Pero el resultado no es el deseado.... me imagino xq esta solucion es bastante chapucera

De manera que si el post no ha quedado demasiado lioso (por haber intentado explicar con varios ejemplos lo que intento hacer), si alguien consigue darme un poquito de luz por donde buscar, lo agradeceria mucho.
  #2 (permalink)  
Antiguo 29/05/2008, 15:46
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Comporbacion/Ejecucion automatica de funciones PHP con AJAX

Hola guru3k, hay dos formas de hacer lo que pones, la primera y mas sencilla es usando window.setTimeOut para que se llame la función cada X tiempo.

La más complicada pero la más correcta es usar COMET para programar tus llamadas asincronas, claro la desventaja de COMET es que necesitas un servidor que soporte "stateless calls" que son las que requiere COMET para que te envié los datos apenas cambien.

Saludos.
  #3 (permalink)  
Antiguo 30/05/2008, 02:40
 
Fecha de Ingreso: junio-2005
Mensajes: 20
Antigüedad: 18 años, 10 meses
Puntos: 0
Respuesta: Comporbacion/Ejecucion automatica de funciones PHP con AJAX

Lo de window.setTimeOut seria algo mas o menos al setTimeout(...) y el inconveniente que le veo es que es javascript, y a mi me interesaria interactuar con la funcion php directamente.

Sobre el otro tema, no he encotrado informacion al respecto y es la primera vez q oigo el concepto de "COMET" o "stateless calls".

Sigo intentando dar con alguna solucion similar a la recepcion de correos en las cuentas de gmail, pero siguo igual de ciego.... no doy con nada similar en ningun framework de AJAX para PHP, ni en ningun libro/manual/tutorial...
  #4 (permalink)  
Antiguo 30/05/2008, 11:32
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Comporbacion/Ejecucion automatica de funciones PHP con AJAX

Hola guru3k,

AJAX es Javascript, así que bien puedes usar setTimeout para ejecutar una llamada AJAX cada 10 segundos y comprobar si hay nueva "información" en tu BDD.

Saludos.
  #5 (permalink)  
Antiguo 04/06/2008, 01:17
 
Fecha de Ingreso: junio-2005
Mensajes: 20
Antigüedad: 18 años, 10 meses
Puntos: 0
Respuesta: Comporbacion/Ejecucion automatica de funciones PHP con AJAX

Ya se que AJAX es javascript, pero un setTimeout no funciona, no es lo que necesito.

Teniendo un valor en una variable de session, que es la variable que necesito comporbar de manera asincrona, la combinacion javascript+php se me escapa y no consigo encajar como hacer la consulta asincrona.

Estoy seguro de que lo que busco existe, pues google lo implementa tanto en gmail para recibir correos, en google reader cuando hay nuevos feeds y se actualizan los valores de los elementos por leer, etc.

Solo necesito la punta del hilo de la que tirar, para encontrarlo....
  #6 (permalink)  
Antiguo 04/06/2008, 08:13
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Comporbacion/Ejecucion automatica de funciones PHP con AJAX

Creo no leíste lo que te puse en mi primer Post, para hacerlo de la forma correcta FORZOSAMENTE debes de usar COMET.

Pero tiene la desventaja de que necesitas un servidor web especial.

Saludos.
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 13:10.