Показать текстовый файл на веб-странице, которая обновляется каждую секунду - PullRequest
7 голосов
/ 23 июня 2011

Я вроде как стреляю в темноте; Я не знаю, как это сделать, поэтому некоторые указатели и / или ссылки на полезные учебники были бы полезны:

У меня есть веб-сайт, на котором я хочу отобразить текстовый файл (журнал сервера). Вероятно, встроен. Проблема в том, что этот файл обновляется всякий раз, когда на сервере происходят события (обычно быстрее, чем полсекунды). Как я могу сделать так, чтобы веб-страница отображала файл в режиме реального времени, то есть показывать файл в реальном времени?

Я предполагаю, что он будет использовать javascript и AJAX, но мои знания об обоих довольно ограничены. Любые указатели и помощь будут оценены :)

Ответы [ 5 ]

8 голосов
/ 10 августа 2011

В моем ответе используются 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;
        }
    ?>
8 голосов
/ 23 июня 2011

Используя jQuery, вы можете сделать следующее

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

Обновляет div с идентификатором element содержимым файла каждую 1 секунду

0 голосов
/ 23 июня 2011

Другие говорили о загрузке файла журнала при каждом обновлении, но в зависимости от размера файла эта миграция была бы плохой идеей.Возможно, вы захотите создать страницу на стороне сервера, которая будет читать файл журнала и отслеживать, сколько его уже было передано вам, и только даст вам новые биты.Если это файл размером 10 Кбайт, было бы раздражающим (и потенциально запаздывающим) передавать его вам каждую секунду.

В противном случае другие люди, кажется, покрывали бы большую часть материала на стороне клиента.

0 голосов
/ 23 июня 2011

Есть разные способы сделать это ...

Вы можете посмотреть на длинный опрос .

Прикрепите мета-тег , чтобы обновлять страницу каждые X секунд.

tail -f /path/to/log.log в терминале откроет предварительный просмотр последних нескольких строк этого файла - это то, что я делаю, если мне нужно прочитать журналы ошибок при отладке.

Или просто обновлять страницу вручную по мере продвижения, это может раздражать, если страница автоматически изменяет свое содержимое.

Как вы сказали, ваш файл очень большой, я бы использовал функцию PHP file(), чтобы просто захватить первое количество строк X из файла, чтобы уменьшить пропускную способность и повысить читаемость!

0 голосов
/ 23 июня 2011

Вы можете использовать jQuery .get, чтобы получать файл каждые несколько секунд и обновлять страницу для отображения содержимого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...