setInterval似乎没有重新执行php脚本

时间:2013-08-23 23:36:17

标签: php javascript

我要做的是获取一个变量,每隔5秒更新一次:

setInterval(document.getElementById("listeners").innerHTML = 
    "<?php include('../includes/shoutcaststuff.php');  
    echo $dnas_data['CURRENTLISTENERS']; ?>",5000);

但是会发生什么是内部html已设置但不会像应该的那样每5秒更新一次。 我的猜测是php只执行一次,但我不知道是不是这样。 并且我知道我应该创建一个函数来完成setInterval中的内容...一旦我弄清楚如何使其工作,我将清理代码。 提前谢谢。

好的...... ajax是'最好'的答案,因为这里一次登录的人数不会超过2人,所以服务器请求并不是什么大问题。 这是我如何让它工作:

function lCount(){
    $.get("../includes/shoutcaststuff.php",{Count: "TRUE"}, function(data){
        document.getElementById('listeners').innerHTML = data;
    }); 
}

setInterval(lCount,5000);

并将其添加到php的末尾:

if(isset($_GET["Count"])){
echo $dnas_data['CURRENTLISTENERS'];
}

现在它运作正常。

感谢你们的建议:)

2 个答案:

答案 0 :(得分:0)

PHP代码在生成HTML / JS的服务器上运行。如果你需要在页面加载后运行php代码,请使用ajax。

看看这个例子;

使用此:

setInterval(document.getElementById("listeners").innerHTML = 
"<?php echo "1";?>",5000);

将此输出到浏览器:

setInterval(document.getElementById("listeners").innerHTML = 
"1",5000);

答案 1 :(得分:0)

<?php include('../includes/shoutcaststuff.php');
echo $dnas_data['CURRENTLISTENERS']; ?>

此代码仅在构建页面时执行一次。在剩下的时间里,这个javascript被称为第一次回显的任何值。

这里不需要使用静态值,而是需要使用ajax请求(如果你想使用html5,则需要使用websocket)。然后,请求将每5秒钟到达您的服务器一次。请记住,这可能会导致服务器出现过度负载。

Ratchet是一种常用的PHP WebSocket实现,允许使用推送技术将数据发送到客户端。这可能比使用您的轮询方法更为可取。