我需要每隔10秒用PHP提取数据

时间:2012-07-02 01:21:04

标签: php xml refresh

我设置了一个非常小的(内部)专用Web服务器,我需要每隔10秒从XML文件中提取一些能量数据。这是我到目前为止的PHP代码:

 <?php 
    $mydata = simplexml_load_file('http://192.168.x.xx:yyy/data.xml');

    echo $mydata->device[0]->name;
    echo $mydata->device[0]->value;
 ?>

我在我的网络服务器上测试了类似的代码并安装了PHP,我认为这应该可行,但我希望每隔10秒左右运行一次。这样,我网页上显示的数据始终是最新的。该网页将作为墙上的标志全天候运行。刷新数据的最简单方法是什么?

4 个答案:

答案 0 :(得分:4)

我只需刷新使用Ajax显示数据的网页部分。使用JavaScript timer触发刷新。

答案 1 :(得分:2)

最简单的方法?将此行添加到您的页面。

<meta http-equiv="refresh" content="10">

这可能不是最好的方法,特别是如果页面上有很多东西,你不需要每10秒重新加载一次。如果是这种情况,您应该查看AJAX

如果您的页面设置只返回您需要的数据(例如您的示例),您可以使用JavaScript setInterval()每10秒发出一次异步请求以获取最新数据并显示它。

答案 2 :(得分:0)

如果您通过浏览器运行此操作,那么我会选择Eric的答案。

但是,如果从命令行运行此命令,则可以执行以下两种操作之一:

  1. 让您当前的脚本说pull_energy_data.php每10秒从一个cron作业运行一次。不要忘记创建某种锁定机制。如果作业运行时间超过10秒,并且您将同时运行多个脚本。

  2. 另一种方法是让一个脚本包裹你的pull_energy_data.php在循环中运行并每10秒执行一次。这比前一种方法更不可取,因为您需要跟踪上次运行pull_energy_data.php的时间以及如何发出命令来停止包装器脚本。

答案 3 :(得分:0)

假设您在Linux / Unix中运行服务器,或许考虑为它编写一个cronjob(自动化作业)?

我能想到的一个解决方案是每隔10秒将PHP脚本作为cronjob运行,将输出写入文件或数据库表。

然后,您可以编写一个单独的PHP脚本,只要有人在浏览器中加载它,就会读取文件/数据库条目的内容。