Tema: setTimeout
Ver Mensaje Individual
  #4 (permalink)  
Antiguo 30/10/2008, 19:48
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: setTimeout

A ver, te explico.

Tenemos este código:
Código php:
Ver original
  1. <script language="javascript">
  2. <?php
  3.     echo "/* hola */";
  4.     $a = 7;
  5. ?>
  6.     function update() {
  7.         <?php include("visitas.php"); ?>
  8.     }
  9.     setTimeout ( "update()", 1000);
  10. </script>

Eso está metido en una pagina.php, por ejemplo, ok? Entonces llamamos a... http://blabla.bka/pagina.php ok?

Lo que ocurre entonces es:

1º En el servidor se ejecuta el PHP.
Lo que ve el PHP es esto:
Código php:
Ver original
  1. textotextotexto
  2. <?php
  3.     echo "/* hola */";
  4.     $a = 7;
  5. ?>
  6. textotextotexto
  7.         <?php include("visitas.php"); ?>
  8. textotextotexto

Es decir, que PHP sólo ve lo que va en las etiquetas de PHP. Para él, el resto es todo texto.

Entonces se ejecuta el PHP y lo que sea texto se deja tal cual.

2º El resultado se envía al navegador.
Es decir, lo que se envía al navegador es esto:
Código html:
Ver original
  1. <script language="javascript">
  2. /* hola */
  3.     function update() {
  4.        
  5.     }
  6.     setTimeout ( "update()", 1000);

Es decir, lo que explicaba. Que el texto se deja tal cual, lo que digamos que imprima (con echo) lo imprime y lo que se tenga que ejecutar sin imprimir nada pues eso, se ha ejecutado ya pero no ha imprimido nada.

3º Cuando llega al navegador, este ejecuta el Javascript.
Código html:
Ver original
  1. <script language="javascript">
  2. /* hola */
  3.     function update() {
  4.        
  5.     }
  6.     setTimeout ( "update()", 1000);
Eso es exactamente lo que ejecuta. El navegador, no sólo no ve nada de PHP, es que ni siquiera sabe si había PHP o no. Al navegador no le llega nada de eso.

Y ya está. Se acabó. Cuando se ejecuta update() la función está vacía, no tiene nada porque no hay nada que ejecutar en el cliente.




Así que, repito: Si quieres que el PHP se vuelva a ejecutar, hay que volver a llamar al servidor. Puedes actualizar la página con Javascript, hacer una llamada con AJAX, ponerle una cabecera meta refresh o lo que sea, pero hay que volver a llamar a la pagina.php en el servidor. Porque el PHP sólo existe en el servidor.