在网页上显示一个每秒更新一次的txt文件

Show a txt file on a webpage which updates every second

本文关键字:更新 文件 一次 txt 一个 网页 显示      更新时间:2023-09-26

我有点在黑暗中拍摄;我不知道如何做到这一点,所以一些指向有用教程的指针和/或链接会很棒:

我有一个网站,我想显示一个文本文件(服务器日志)。可能是嵌入式的。问题是,每当服务器中发生事件时,该文件都会更新(通常超过半秒)。如何使网页实时显示文件,即显示文件的实时提要?

我的猜测是,它将使用javascript和AJAX,但我对这两者的了解都非常有限。任何提示和帮助都将不胜感激:)

我的答案使用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;
        }
    ?>

使用jQuery,您可以执行以下

setInterval(function() {
    $('#element').load('/url/to/file');
}, 1000);

将每隔1秒用文件内容刷新ID为element的div

您可以使用jQuery.get每隔几秒钟获取一次文件,并更新页面以显示内容。

其他人已经讨论过每次刷新都加载日志文件,但根据文件的大小,这可能是个坏主意。您可能想要创建一个服务器端页面,该页面将读取日志文件,并跟踪其中有多少已经提供给您,只提供新的部分。如果它是一个10k的文件,那么每秒将其传输给你会很烦人(而且可能很滞后)。

除此之外,其他人似乎已经涵盖了大部分客户端内容。

有多种方法可以做到这一点。。。

你可以调查长期民意调查。

粘贴一个元刷新标签,每隔X秒刷新一次页面。

终端中的tail -f /path/to/log.log将打开该文件最后几行的实时预览——如果我需要在调试时读取错误日志,我会这样做。

或者只是边走边手动刷新页面,让页面自动更改内容可能会很烦人。

正如你所说的,你的文件非常大,我会使用PHP file()函数从文件中获取前X行,以保持带宽降低和可读性提高!

使用此

setInterval(function() {
jQuery.get('file.txt', function(data) {
   alert(data);
   //process text file line by line
   $('#div').html(data.replace('n','
'));
});
  
 }, 1000); 

https://www.sitepoint.com/jquery-read-text-file/

最后,是脚本和div id="重新加载此";一起好好工作!它还可以显示来自PHP文件的信息,该文件查询文本文件,以便在div元素中显示传入文本之前对其进行格式化。