自动更新网页内容

时间:2011-08-24 07:44:07

标签: php javascript ajax linux

我正在开发一个系统,它有一堆与linux机器通信的传感器。我需要为此创建一个Web界面来显示传感器的状态,并在任何传感器的状态发生变化时自动更新它们(或者每隔几秒自动更新一次)。

读取传感器的代码全部采用C代码。有哪些选项可以自动将传感器数据推送到Web浏览器,甚至可以连续请求数据?

我考虑过以下方案: 在C程序中为传感器数据分配共享内存,可以通过像php这样的服务器端脚本读取。然后在循环或计时器事件中有一些ajax或者请求数据的东西。

是否可以将数据推送到客户端而不是拉?

我真的没有任何php / ajax的经验,所以关于如何实现这个的任何提示都会很棒。

我不知道的一些关键要素:

- 如何在javascript中进行计时

- 如何从请求到服务器的动态javascript中获取某种结构化数据(例如读取传感器数据的php页面)

4 个答案:

答案 0 :(得分:1)

  1. 您通常无法使用HTTP推送数据。您将不得不轮询服务器。 (如果您有兴趣,可以选择其他方法。请参阅Comet
  2. 您可以使用Ajax动态地向服务器发送请求。有关详细信息,请参阅this tutorial。这很简单。
  3. 您必须定期发送此Ajax。您可以使用setInterval进行此操作。
  4. 的setTimeout( “yourAjaxRequestFunction”,延迟);

答案 1 :(得分:1)

正如您所说,要获取数据,您有两种解决方案:

A)使用ajax

拉取数据

您可以使用setInterval轻松完成一些周期性任务:

setInterval(callbackserver, PERIOD_MILLIS);

如果你使用像jquery这样的框架,那么有大量的插件可以定期更新。

B)使用js服务器推送数据

可以将数据推送到浏览器而不是拉动它。为此,您需要一个基于协议的服务器,如 Comet 。查看this project了解详情

  

如何从请求到服务器的动态javascript中获取某种结构化数据

json似乎是结构化数据的完美解决方案。

  

我考虑过以下方案:分配共享内存   传感器数据的C程序,可由服务器端读取   像php这样的脚本

为什么不简单地在C中制作一个deamon并通过PHP使用exec("mydeamon -data")命令从中获取数据

答案 2 :(得分:1)

在您的情况下,如果您/您的公司负担得起,我建议Wt 如果您的应用程序是用C语言编写的,那么C ++可能比PHP或Javascript更熟悉 它还可以使用ajax pull或web套接字将数据推送到网页。

答案 3 :(得分:0)

  • Ajax是定期提取数据的不错选择。它完全是客户端,非常容易入手。查看互联网上的一些例子。
  • 对于服务器端,你需要从C中获取数据的东西。在C和PHP之间共享内存将是乏味的。您可以简单地用C创建或更新文本文件。并将此文件放在Web服务器的主文件夹中(可能是apache)