Java 在网页上显示XML数据而不使用文件

Java 在网页上显示XML数据而不使用文件,java,php,xml,Java,Php,Xml,目前,我有很多客户端连接将数据发送到服务器,然后服务器将数据聚合到一个XML文件中。然后,客户端可以查看一个网页,该网页通过AJAX每1秒更新一次内容窗格,其中包含文件的最新内容 我的问题是,是否有人对我如何跳过一起编写文件,以某种方式将XML数据直接发送到网页有任何建议?现在,我每2秒写入一次文件,但我希望以更高的频率(可能是0.75秒)写入文件,这样的速度写入文件可能会成为一项昂贵的操作,也会影响硬盘的整体健康 web部分使用php(在Apache2.2上),所以我想让页面创建一个到服务器的

目前,我有很多客户端连接将数据发送到服务器,然后服务器将数据聚合到一个XML文件中。然后,客户端可以查看一个网页,该网页通过AJAX每1秒更新一次内容窗格,其中包含文件的最新内容

我的问题是,是否有人对我如何跳过一起编写文件,以某种方式将XML数据直接发送到网页有任何建议?现在,我每2秒写入一次文件,但我希望以更高的频率(可能是0.75秒)写入文件,这样的速度写入文件可能会成为一项昂贵的操作,也会影响硬盘的整体健康

web部分使用php(在Apache2.2上),所以我想让页面创建一个到服务器的套接字连接,服务器可以写入该套接字,页面可以在数据被按下时更新,但是我想知道是否有更好的方法来完成这类任务


XML文件通常没有那么大,小于10KB,因此如果我的担忧没有根据,我也希望听到这样的消息。

您可以使用类似PHP的
DomDocument
在内存中构建文件,然后使用
DomDocument::saveXML
-请参阅

而不是使用AJaX来调用文件
/something/something/darkside/something.xml
,而是调用
/something/something/darkside/something.xml.php
(例如),并且该php文件将退出xml

为了确保它被解释为XML,最好包含如下标题:

header('Content-type:text/xml;charset=utf-8');
但是… 我认为你的问题在于保存数据?据我所知,这里我可能错了,您有很多客户机创建一个单一的、保存的资源(以XML文件的形式),该资源由所有客户机执行的操作更新

这意味着您必须在服务器上的某个位置保存某些内容。这意味着您实际上有两个选项,将数据保存在文件(正如您所做的)或数据库中(虽然从技术上讲,甚至数据库也会将数据写入文件系统的某个位置)

就我个人而言,我会使用一个数据库——它们是为繁重的工作而设计的,
插入
(或
更新
)使用
DomDocument::saveXML
以XML格式存储数据。。。你最终会得到一些(概念上)类似的东西:


然后在你需要的时候把它读回来。。。可能与您使用的原理基本相同,但在数据库中而不是在基于文件的系统中执行此操作。

当您收到数据时,您不会立即写入数据,而是每隔2秒钟定期写入一次?为什么?假设我有20个客户机,每个客户机每0.5秒发送一次更新,所以如果我每次都在每个客户机的基础上写入数据,那么可能会导致每0.1秒或更短时间写入一次。目前,最新的客户机更新保存在客户机对象中,当触发xml编写器时,它会从每个客户机对象中提取并写入这些数据。正确,xml文件是包含所有客户机信息的单个保存资源。使用所有客户端提供的信息定期更新文件(每2秒写入一次)。我将研究在文本文件上使用数据库的效率。我认为这是一个很好的方法(尽管它确实增加了复杂性,因为现在涉及到数据库)。当客户端向服务器发送更新时,服务器会将数据保存到数据库中。然后,当客户机请求XML文档时,服务器将使用数据库中的数据从头开始动态构建XML文档。此外,将数据存储在数据库中可以为您提供更强大的数据操作能力。例如,如果您决定希望XML文档中的数据按日期字段排序,该怎么办?使用数据库很容易做到这一点。
$db->query("INSERT INTO table({fields}) VALUES({values including $xmlDomDoc->saveXML())}");