2013-05-25 115 views
0

我使用time()函數來創建一個php多人遊戲文字遊戲來同步它。PHP時間()在同一時刻給予不同的結果

它的工作原理很好,只是有時候時間值函數會在發生混亂的同一時刻給出不同的結果! 要說明的是,我做一個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用戶打開它,我也得到20多歲〜的偏移! 我貶低了其中一個Chrome用戶的歷史並解決了問題!

請解釋&解決方案

+0

也許這是20ms而不是20s?你仔細檢查過嗎? – alexandernst

+0

@alexandernst'time()'返回秒。 – Zaffy

+0

是的,我使用時間()和不microtime() –

回答

0

因爲OP詢問另一種解決方案:「我使用setInterval函數從服務器獲取regulary數據是其他有解決方法嗎?」

是,比如你可以每10秒刷新由:

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

請注意:刷新整個頁面每隔1秒從服務器獲取數據是一個壞主意。

建議:爲什麼不嘗試Ajax調用獲取數據?

欺騙CHROME不使用CACHE(如果多數民衆贊成的情況下):

如果谷歌瀏覽器的緩存是一種痛苦,試着這樣做:而不是重新加載相同的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> 
+0

是的,我使用multipul每1秒得到jquery調用 function boot(){ $ .post('content/boot。php',function(data){ ........ \t \t \t \t },「json」); }; –

+0

但更高級的問題似乎與Chrome瀏覽器相關,而不是服務器!也許是緩存 –

相關問題