当前位置: 首页 > 面试题库 >

实时更新文件

琴琪
2023-03-14
问题内容

我有一个php文件,可打印txt文件的最后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
?>

问题答案:

用ajax。如果需要跨浏览器兼容性,请使用jQuery之类的库中的AJAX函数替换我提供的AJAX函数。

<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>

您将必须创建一个名为myphpfile.php的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
?>


 类似资料:
  • 我想在我的应用程序中转换语音到文本...对于这个,我正在使用识别监听器界面一切正常,但如何更新和显示文本,即使说话(像在谷歌现在语音搜索) 我已经设置了识别意图。EXTRA_PARTIAL_RESULTS,为真,并且还使用了识别监听器界面的onPARAL结果(Bundle arg()方法来设置文本通过语音识别完成后立即显示整个文本,但是我希望实时文本在用户说话时显示 我的活动 怎么让这一切发生

  • 问题内容: 我正在制作类似于Risk的基于浏览器的多人回合制策略游戏。 现在,做事的最简单方法似乎就是使其像常规网页一样。玩家每次刷新时,网页都会在数据库中查询所需的信息。 这是可以接受的,但我宁愿实时更新页面,因此播放器不必不断刷新页面。 我可以让网页每X秒查询一次数据库,但是我听说这样做效率不高。 最好的方法是什么? 问题答案: 尝试使用Socket.io库或Juggernaut2。您需要使用

  • 我有课: 阅读了手册后,我明白了我们需要在FX线程中刷新UI。我已经使用了platform.runlater(),但是在流结束时UI变慢了。 为我糟糕的英语感到抱歉。

  • 问题内容: 我同时使用Javafx和线程,并且遇到了这个问题,我制作了一个按钮,然后单击该按钮(使用事件处理程序)时,我做了一个for循环,将按钮更改为1,2,3,4 ,5,然后在每个中间延迟一秒钟。像倒计时! 但是发生的事情是延迟了5秒钟,并将按钮的文本更改为5。 问题是我希望看到它在1到5之间变化,但我看到的只是在5秒延迟结束时为5。我认为它会更改按钮文本,但看不到。我可能与类中的方法有关。

  • 我同时使用Javafx和线程,我经常遇到这个问题,我制作了一个按钮,然后当单击按钮时(使用事件处理程序),我制作了一个for循环,将按钮更改为1、2、3、4、5,然后在每个按钮中间延迟一秒钟。就像倒计时一样! 但实际情况是,它会延迟5秒钟,并将按钮的文本更改为5。 问题是我想看到它在1到5之间变化,但我看到的只是5秒延迟结束时的5。我假设它会更改按钮文本,但我看不到它。我可能不得不处理<代码>。在

  • 问题内容: 有人可以向我解释一下吗: 如果我注释掉最后三行,输出为: 但是,如果我取消最后三行的注释,则输出为: IE。第一个游标已用第二个游标中执行的DML结果进行了更新。 这是预期的行为吗?有什么方法可以预防吗? 我正在运行Python 3.6.3(根据Ubuntu 17.10),以防万一。 问题答案: 如果可能,SQLite会根据需要计算结果行。但这并非总是可能的,因此无法保证。 您永远不要