Php 如何将文件内容实时流式传输到浏览器

Php 如何将文件内容实时流式传输到浏览器,php,javascript,file,stream,logging,Php,Javascript,File,Stream,Logging,我正试图找到一种有效的方法来查看网页上的服务器日志,我不介意构建一个应用程序,我只是不知道最好的方法 有没有一种方法可以让流通过php打开到文件和浏览器?还是必须每隔x秒轮询一次文件 提前感谢, Shadi最好的方法是使用AJAX每隔x秒提取一次文件内容,给人一种实时的错觉 如果您确实想要实时,您可以使用XMPP服务器,但从我所看到的情况来看,第一个解决方案已经足够了,并且不需要做很多工作。请记住,web模型本质上是无状态的(断开连接的)。当客户端提交请求时,服务器会处理该请求,然后相应地发送响

我正试图找到一种有效的方法来查看网页上的服务器日志,我不介意构建一个应用程序,我只是不知道最好的方法

有没有一种方法可以让流通过php打开到文件和浏览器?还是必须每隔x秒轮询一次文件

提前感谢,


Shadi

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


如果您确实想要实时,您可以使用XMPP服务器,但从我所看到的情况来看,第一个解决方案已经足够了,并且不需要做很多工作。

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

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

任何基于web的聊天机制本质上都使用推送架构,如果能从中获得一些灵感,那就很好了。在这种情况下,服务器创建事件(在生成日志消息时),而不是用户创建向其他用户发送的消息。看看他们是如何做到这一点的。如果你能在架构上找到一些东西,谷歌聊天可能值得一看

对于实际的日志记录,我不确定您是否需要帮助,但这是一个很好的开始,因为它为您提供了一个配置,可以同时登录到任意数量的“记录器”,如数据库、文件、套接字、,您可能会找到一个允许您将其绑定到您选择使用的任何推送框架中的框架


祝你好运

你能再解释一下XMPP服务器部分吗,或者告诉我相关信息的方向,因为我似乎找不到适合我所做工作的东西……XMPP是一种通信协议(就像HTTP一样,你用于网页的协议)。但与HTTP不同,XMPP适合于实时通信,可以实现数据推送和负载平衡等功能。使用XMPP通常需要一个专用服务器,Ejabberd是最著名的服务器之一,但需要掌握Erlang方面的知识。这是一个非常强大的解决方案,但可能有些过火,您需要做大量的工作才能在一小时内完成AJAX可以处理的事情。