2012-10-08 28 views
5

Quiero preguntarle cómo puedo usar la función php una y otra vez después de un tiempo automáticamente al igual que setInterval en Javascript. Establecemos el tiempo y está en su trabajo hasta que el script se cancela o cierra.¿Cómo usar setInterval en PHP?

INDEX.PHP

<? 
$Wall = new Wall_Updates(); 
$updatesarray=$Wall->Updates(); 
foreach($updatesarray as $data) 
{ 
    $likes=$data['likes']; 
    ?> 
    <div id="likes"><?php echo $likes; ?></div> 
    <? 
} 
?> 

Y Wall_Updates() función se define aquí en function.php

<?php 

class Wall_Updates {  
    public function Updates() { 
     $myname=$_COOKIE['usename']; 
     $query=mysql_query("SELECT * FROM posts WHERE name='$myname'"); 
     while($row=mysql_fetch_array($query)) 
      $data[]=$row; 
     return $data; 
    } 
} 
?> 

Quiero esta función Wall_Updates() para obtener los datos de MySQL de nuevo y otra vez. Entonces, se actualizará.

+0

usted sabe dónde se ejecuta PHP y que sólo genera las páginas estáticas? Sin embargo, podría usar otro ciclo 'while' y una llamada' sleep() 'para retrasar la generación de la página. Pero eso es probablemente inútil. – mario

+0

Parece que desea actualizar su página con el total de "Me gusta". Debe hacer esto en JavaScript a menos que desee volver a cargar la página completa. –

Respuesta

15

Para el registro: Creo que es una mala idea. Pero cualquiera que sea :)

probar este código

function setInterval($f, $milliseconds) 
{ 
    $seconds=(int)$milliseconds/1000; 
    while(true) 
    { 
     $f(); 
     sleep($seconds); 
    } 
} 

Uso:

setInterval(function(){ 
    echo "hi!\n"; 
}, 1000); 

O:

$a=1; 
$b=2; 

setInterval(function() use($a, $b) { 
    echo 'a='.$a.'; $b='.$b."\n"; 
}, 1000); 
+2

¿Por qué crees que es una mala idea? –

+0

Lo probé y mi sitio dejó de funcionar. Usé 10000 como intervalo. – Black

+2

@b_dubb: porque no se comporta como 'setInterval' en javascript. Tal implementación no permite hacer cierta tarea "en segundo plano", cuando JS - lo hace. Debido a que JS es asincrónico, PHP - no. Es por eso que pensé que era una mala idea. –

0

No está claro lo que quiere lograr con exactitud.

¿Sabe usted que PHP sólo ofrece contenido a petición?

Si desea que el servidor actualice algo de vez en cuando (un archivo por ejemplo), utilizar una tarea programada (en * nix).

Si usted quiere que su página web para volver a consultar algo, hacerlo en javascript y llamar a un script PHP que ofrece contenido fresco.

6

se recomienda usar setInterval para sondear los resultados de una página php usando AJAX y luego salida a sus resultados.

Por lo tanto, sería algo como esto utilizando jQuery:

<script> 
    var poll = true; 
    var getData = function() { 
     if (poll) { 
      $.get('getData.php', function(data) { $('#likes').html(data); }); 
     } 
    }; 

    $(document).ready(function() { 
     setInterval(getData, 5000); 
     $('.comm').click(function() { poll = false; }); 
     $('.comm').blur(function() { poll = true; }); 
    }); 
</script> 
+0

hombre eso es muy bueno. Sólo quiero que, onclick del área de texto con la clase de comunicación () este intervalo tener claridad y cuando el foco en la caja de texto no es más que comenzar de nuevo intervalo .... Por favor – Heart

+0

Puede hacer que tienen una variable en la página que se puede usar en getData para ver si obtiene más datos. Actualicé la respuesta anterior para incluir la nueva variable y los controladores de clic/desenfoque. Espero que ayude. – Sol

+0

Tu uno no funciona, pero lo hice usando W3SCHOOLS.COM. El problema al que me enfrento es que se debe hacer clic dos veces en el área de texto para detener el intervalo. El código está aquí – Heart

0

A diferencia de Javascript, PHP se ejecuta en el lado del servidor. No hay funcionalidad de setTimeout en PHP. Puedes acercarte utilizando cronjobs, u otras secuencias de comandos PHP, que llaman a tus scripts.

+0

para lograr la funcionalidad de una página de actualización, mire la solución de solcheas. sin embargo, no quedó claro por la pregunta lo que querías;) –