我有点在黑暗中射击;我不知道如何做到这一点所以一些指针和/或指向有用教程的链接会很棒:
我有一个网站,我想显示一个文本文件(服务器日志)。可能是嵌入式的。问题是,只要服务器中发生事件,该文件就会更新(通常超过半秒)。我怎样才能使网页实时显示文件,这意味着显示文件的实时信息?
我的猜测是它会使用javascript和AJAX,但我对这两者的了解非常有限。 任何指针和帮助将不胜感激:)
答案 0 :(得分:8)
使用jQuery,您可以执行以下操作
setInterval(function() {
$('#element').load('/url/to/file');
}, 1000);
将每隔1秒刷新ID为element
且文件内容为
答案 1 :(得分:8)
我的回答使用PHP和Ajax,虽然改为ASP或任何其他语言都不会很难。
在头上
<script type="text/javascript">
function Ajax()
{
var
$http,
$self = arguments.callee;
if (window.XMLHttpRequest) {
$http = new XMLHttpRequest();
} else if (window.ActiveXObject) {
try {
$http = new ActiveXObject('Msxml2.XMLHTTP');
} catch(e) {
$http = new ActiveXObject('Microsoft.XMLHTTP');
}
}
if ($http) {
$http.onreadystatechange = function()
{
if (/4|^complete$/.test($http.readyState)) {
document.getElementById('ReloadThis').innerHTML = $http.responseText;
setTimeout(function(){$self();}, 1000);
}
};
$http.open('GET', 'loadtxt.php' + '?' + new Date().getTime(), true);
$http.send(null);
}
}
</script>
在身体里
<script type="text/javascript">
setTimeout(function() {Ajax();}, 1000);
</script>
<div id="ReloadThis">Default text</div>
</body>
现在使用loadtxt.php读取文本文件的值
<?php
$file = "error.txt";
$f = fopen($file, "r");
while ( $line = fgets($f, 1000) ) {
print $line;
}
?>
答案 2 :(得分:0)
您可以使用jQuery .get每隔几秒获取一次文件并更新页面以显示内容。
答案 3 :(得分:0)
有各种方法可以做到这一点......
您可以查看long polling。
粘贴meta refresh tag每隔X秒刷新页面。
终端中的 tail -f /path/to/log.log
将打开该文件最后几行的实时预览 - 如果我需要在调试时读取错误日志,这就是我所做的。
或者只是随手动刷新页面,让页面自动更改内容可能会很烦人。
正如你所说,你的文件非常大,我会使用PHP file()
函数从文件中获取前X行的数量,以保持带宽和可读性!
答案 4 :(得分:0)
其他人已经讨论了每次刷新时加载日志文件,但根据文件的大小,这个migth是个坏主意。您可能希望创建一个服务器端页面,该页面将读取日志文件并跟踪已经给出了多少日志文件并仅提供新位。如果它是一个10k的文件,那么每秒都会转移给你,这会很烦人(而且可能很滞后)。
否则其他人似乎已经覆盖了大部分客户端的东西。
答案 5 :(得分:0)
使用这个
setInterval(function() {
jQuery.get('file.txt', function(data) {
alert(data);
//process text file line by line
$('#div').html(data.replace('n','
'));
});
}, 1000);