0

我创建了一个 php 多人文字游戏,使用 time() 函数来同步它。

它工作得很好,只是有时时间价值函数会在同一时刻给出不同的结果,导致混乱!为了解释这一点,我用这段代码制作了一个 php 文件:

<html>
<head>
<script type="text/JavaScript">
function timedRefresh(timeoutPeriod) {
setTimeout("location.reload(true);",timeoutPeriod);
}
</script>
</head>
<body onload="JavaScript:timedRefresh(1000);">
<?php
echo time();
?>
</body>
</html>    

我用两个不同的 chrome 用户打开它,我得到了 ~ 20s 的偏移量!我删除了其中一位 chrome 用户的历史记录并解决了问题!

请解释和解决方案

4

1 回答 1

0

因为 OP 要求另一种解决方案:“我使用 setinterval 函数从服务器获取常规数据!还有其他解决方案吗?”

是的,例如,您可以通过以下方式每 10 秒刷新一次:

<?php $refresh_time = 10; ?>
<head>
    <meta http-equiv="refresh" content="<?php echo $refresh_time; ?>" />
</head>

请注意:每 1 秒刷新一次整个页面以从服务器获取数据是一个坏主意。

建议:为什么不尝试使用 ajax 调用来获取数据?

欺骗铬不使用缓存(如果是这样的话):

如果 google chrome 缓存很麻烦,请尝试这样做:不要重新加载相同的 url,而是向每次新的 url 添加一个参数,这样浏览器就不会尝试使用任何缓存。像这样:

<script type="text/JavaScript">
    function timedRefresh(timeoutPeriod) {
        setTimeout("window.location.href = location.protocol + '//' + location.host + location.pathname+'&t=<?php echo time();?>'",timeoutPeriod);
    }
</script>
于 2013-05-25T15:27:38.097 回答