Живая лента обновления файла - PullRequest
3 голосов
/ 03 сентября 2011

У меня есть php-файл, который печатает последние 50 строк текстового файла.Тем не менее, этот файл добавляется каждую секунду и хотел бы просмотреть «прямую трансляцию» действия.Как это может быть сделано?Это код для php-файла:

<?php
$filename = '/home/duke/aa/servers/df/var/logs.log';  //about 500MB
$output = shell_exec('exec tail -n50 ' . $filename);  //only print last 50 lines
echo str_replace(PHP_EOL, '<br />', $output);         //add newlines
?>

Ответы [ 2 ]

5 голосов
/ 03 сентября 2011

С Аяксом. Если вам нужна кросс-браузерная совместимость, замените предоставленную мной функцию AJAX на библиотеку типа jQuery .

<html><head></head><body>
<div id="feed"></div>
<script type="text/javascript">
var refreshtime=10;
function tc()
{
asyncAjax("GET","myphpfile.php",Math.random(),display,{});
setTimeout(tc,refreshtime);
}
function display(xhr,cdat)
{
 if(xhr.readyState==4 && xhr.status==200)
 {
   document.getElementById("feed").innerHTML=xhr.responseText;
 }
}
function asyncAjax(method,url,qs,callback,callbackData)
{
    var xmlhttp=new XMLHttpRequest();
    //xmlhttp.cdat=callbackData;
    if(method=="GET")
    {
        url+="?"+qs;
    }
    var cb=callback;
    callback=function()
    {
        var xhr=xmlhttp;
        //xhr.cdat=callbackData;
        var cdat2=callbackData;
        cb(xhr,cdat2);
        return;
    }
    xmlhttp.open(method,url,true);
    xmlhttp.onreadystatechange=callback;
    if(method=="POST"){
            xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
            xmlhttp.send(qs);
    }
    else
    {
            xmlhttp.send(null);
    }
}
tc();
</script>
</body></html>

Вам нужно будет создать php-файл с именем myphpfile.php (или изменить приведенный выше код для ссылки на правильный файл) и добавить в него следующее (как вы взяли из вашего вопроса):

<?php
$filename = '/home/duke/aa/servers/df/var/logs.log';  //about 500MB
$output = shell_exec('exec tail -n50 ' . $filename);  //only print last 50 lines
echo str_replace(PHP_EOL, '<br />', $output);         //add newlines
?>
0 голосов
/ 03 сентября 2011

проверка с использованием php, эффективное чтение файла последних строк в PHP

http://mydebian.blogdns.org/?p=197

или

если на сервере установлен tail, быстрый

$logfile = '/home/duke/aa/servers/df/var/logs.log';
$numlines = "50";
$cmd = “tail -$numlines '$logfile'”;
$output = shell_exec($cmd);
echo $output;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...