A ver, te explico.
Tenemos este código:
Código php:
Ver original<script language="javascript">
<?php
echo "/* hola */";
$a = 7;
?>
function update() {
<?php include("visitas.php"); ?>
}
setTimeout ( "update()", 1000);
</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 originaltextotextotexto
<?php
echo "/* hola */";
$a = 7;
?>
textotextotexto
<?php include("visitas.php"); ?>
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<script language="javascript"> /* hola */
function update() {
}
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<script language="javascript"> /* hola */
function update() {
}
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.