2016-02-23 132 views
0

我正在使用PHP回显文件中的最后x行,但它正在发回旧数据。如果我直接调用PHP,然后刷新,它会显示正确的数据。 但是,从调用PHP的HTML页面(使用jQuery),它将只加载上次显示的数据,直到我直接调用PHP并再次刷新。需要调用PHP两次才能获得正确的结果

我在另一台服务器上使用了相同的代码,没有任何问题。这似乎是在这个新的服务器上,问题是。

这是PHP代码段

$file = file("thisisarealpath/server_chat.log") or die("No Server Chat Found"); 
if (count($file) > $MAX_SERVER_LINES) { 
    for ($i = count($file) - $MAX_SERVER_LINES;$i < count($file); $i++) { 
     echo "<span id=\"serverMessage\">" . $file[$i] . "</span><br/>"; 
    } 
} else { 
    for ($i = 0;$i < count($file); $i++) { 
     echo "<span id=\"serverMessage\">" . $file[$i] . "</span><br/>"; 
    } 
} 

这是jQuery的调用它

setInterval(function() { 
     if (window.refresh) { 
      $("#serverLog").load("GetLogs.php?logType=server&pass=" + window.pass); 
     } 
}, 3000); 

刷新HTML页未解决的问题。我找到的唯一“修复”是直接点击PHP,然后刷新。

+0

你有没有日志或其他东西要继续? – atwright147

+0

如果你的日志文件会变大,你不能用file()加载所有内容到一个数组中看看['fread()']的例子(http://php.net/manual/en/function.fread .php) –

回答

1

听起来好像新服务器的配置允许它缓存先前未缓存的请求。检查您的请求的状态代码;他们可能会显示304 Not modified。一个通用的解决方案可能是相关的,即加强一个总是设置为当前时间的多余参数,以强制服务器响应当前资源,绕过缓存。

+0

我在想这是缓存,我只是不知道如何克服它。感谢您的快速回复! – Etzelia

+0

你打赌。很高兴帮助一位中年同伴。 ;) – kungphu

相关问题