首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Web实现"tail -f filename"?

Web实现"tail -f filename"?
EN

Stack Overflow用户
提问于 2010-11-02 21:54:59
回答 4查看 11.7K关注 0票数 11

我有一个日志文件,并想创建一个网页(可能是Python,但不是严格的),它的工作方式很像unix的“尾部-f文件名”命令的工作方式(当它们被写入文件时,显示新的日志行)。

因此用户将在浏览器中持续看到登录权限。

您将如何实现这一点?

EN

回答 4

Stack Overflow用户

发布于 2013-06-21 00:51:37

Tailon是一个python webapp,提供类似tail -f的功能。此外,wtee (tailon的姊妹项目)可以使其所有标准输入在浏览器中可见-它的用法与unix tee命令相同:tail -f filename | wtee

票数 9
EN

Stack Overflow用户

发布于 2015-10-02 13:07:19

我使用jquery (.ajax)和php (json)实现了这一点。

流程本质上如下:

  • 用户在他们的浏览器上调用html页面
  • html页面包含对执行所需功能的服务器上的远程php脚本的初始jquery .ajax调用,在这种情况下,检索文件的最后几行被‘尾随’
  • 如果没有新行可用,则php脚本只是循环(同时ajax调用者等待,即长轮询),并且可以被配置为在必要时超时(向客户端上的ajax调用函数返回适当的值)当php脚本检测到新行时超时(
  • ),它们被包装在json响应中,并被发送回浏览器上的ajax调用函数,然后将其附加到页面的现有内容中。
  • 然后javascript函数将递归地进行相同的ajax调用,实际上处于无限循环中。

在我的具体实现中,我执行了以下操作:

  • 客户端的ajax调用和服务器端的php脚本都有超时处理,例如,很好地处理断开的连接。还确保ajax调用不会永远等待。
  • ajax调用将行号作为引用传递回服务器,告诉它收到的最后一个行号是什么,这样服务器就知道要返回哪些行。当调用php脚本时,服务器将立即返回文件
  • 的最后10行,它使用客户端最后的行号对文件进行快速检查;如果已经添加了新行,则立即返回它们,如果没有,则进入循环(1秒),然后检查文件ctime (或mtime),以检测何时写入了新行。这比每秒计算文件中的行数(可能很大)更有效。

在这里查看我使用jquery和php实现的长轮询/实时尾部:https://github.com/richardvk/web_file_tail

票数 2
EN

Stack Overflow用户

发布于 2016-10-04 01:55:25

Scullog,具有将本地驱动器共享给浏览器的能力。通过浏览器上的Socket.IO流式传输日志文件。它可以在任何平台上运行,例如windows/linux/mac。它作为服务或独立模式运行。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4078352

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档