【问题标题】:How to stream the contents of a file live to a browser如何将文件的内容实时流式传输到浏览器
【发布时间】:2010-12-21 06:16:27
【问题描述】:

我正在尝试找到一种有效的方式来查看网页上的服务器日志,我不介意构建一个应用程序,但我无法找到最佳方式。

有没有办法让流对 php 文件和浏览器保持打开状态?还是必须通过每 x 秒轮询一次文件来完成?

提前致谢,

沙迪

【问题讨论】:

    标签: php javascript file stream logging


    【解决方案1】:

    最好的解决方案绝对是某种能力的 AJAX。让服务器按照您描述的方式(保持打开的流)向您“推送”的唯一方法是要求 HTTP 连接保持打开状态,这最终会触发超时并消耗大量资源。我会调查Cometd library。这样做的缺点是我相信它依赖于 Java,尽管该站点确实提到了 perl、python 和“其他语言”。在最坏的情况下,您可以使用特定的码头实现仅用于特定端口上的日志监控。无论如何,该框架很可能是您的最佳选择。

    任何基于 Web 的聊天机制本质上都使用推送架构,并且很适合寻找一些灵感。在这种情况下,不是用户创建向其他用户触发的消息,而是服务器创建事件(当生成日志消息时)。查看this article on Facebook chat 了解他们是如何做到的。如果你能在架构上找到一些东西,谷歌聊天可能值得研究。

    对于实际的日志记录,我不确定您是否需要帮助,但目前正在孵化的log4php 可能是一个不错的起点,因为它为您提供了可以同时记录日志的配置到任意数量的“记录器”,如数据库、文件、套接字等。您可能会找到一个允许您将其绑定到您选择使用的任何推送框架中。

    祝你好运!

    【讨论】:

      【解决方案2】:

      请记住,Web 模型本质上是无状态的(断开连接)。考虑到这一点,当客户端提交请求时,服务器会处理请求,然后相应地发送响应。您可以使用 cookie 和/或会话来跟踪客户端的操作,但为请求保留的资源会在响应提交回来后释放。 我认为实现您的目标的最佳方法是开发一个 Web 服务来检查日志的状态并获取差异(如果有)。您的应用程序可能包含一个带有 div 的网页,该 div 将显示来自 Web 服务的差异。 带有计时器的脚本将触发对 Web 服务的调用。 我会在几周内尝试做这样的事情,我会在moropo blog(西班牙语)上发布整个解决方案。您可以使用 cmets 请求后期翻译。

      【讨论】:

        【解决方案3】:

        最好的方法是使用 AJAX 每隔 x 秒拉一次文件内容,给人一种实时的错觉。

        如果您确实想要实时,可以使用 XMPP 服务器,但据我所知,第一个解决方案已经足够了,不需要很多工作。

        【讨论】:

        • 您能否再解释一下 XMPP 服务器部分,或者指出相关信息的方向,因为我似乎找不到适合我正在做的事情的东西...跨度>
        • XMPP 是一种通信协议(就像 HTTP,用于网页的协议)。但与 HTTP 不同的是,XMPP 适合实时通信,并且可以执行诸如数据推送数据和负载平衡之类的事情。使用 XMPP 通常需要专用服务器,Ejabberd 是最著名的服务器之一,但需要 Erlang 知识。这是一个非常强大的解决方案,但它可能有点矫枉过正,你需要大量的工作才能完成 AJAX 在一小时内可以处理好的事情。
        【解决方案4】:

        试试wonlog。 https://www.npmjs.com/package/wonlog 您可以将多个日志文件流式传输到 Web 浏览器。

        【讨论】:

        • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
        • 对资源的引用不是静态的,它们可以随时更改。因此,建议您详细描述您的答案,这样它就会保持不变,并且 OP 不必导航到不同的页面来找到解决方案
        猜你喜欢
        • 2014-05-29
        • 2010-10-11
        • 2016-08-02
        • 2013-04-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-14
        • 1970-01-01
        相关资源
        最近更新 更多