如何使用 PHP、cURL、ajax 流式传输实时数据并将其呈现在折线图中

Posted

技术标签:

【中文标题】如何使用 PHP、cURL、ajax 流式传输实时数据并将其呈现在折线图中【英文标题】:How can I stream live data and present it in a line chart using PHP, cURL, ajax 【发布时间】:2013-10-06 07:23:46 【问题描述】:

有一个硬件可以记录数据。我可以调用 API 来通过 cURL 获取数据流。它每秒钟记录一行新数据。我想流式传输这些数据并随着时间的推移将其呈现在折线图中。使用 php,也许还有 AJAX。我想在浏览器中看到一个动态图表,每秒钟刷新一次浏览器或使用 Ajax。我需要什么样的工具?这样做的最佳方法是什么?

谢谢大家,这些都是非常有用的东西。 目前我正在努力从硬件中获取数据。 我可以通过这样编写的接口访问数据:

192.168.150.130:2345/realtime

然后我可以在浏览器中看到这个:

DM_NumLogChans=5
DM_NumDataModes=1

DM_LogicalChan=1
DM_ChanType=SEQUENTIAL
DM_NumDims=2
DM_DataMode=1
DM_DataModeType=TIMHIS
DM_AxisLabel.Dim1=Time
DM_AxisLabel.Dim2=Value
DM_AxisUnits.Dim1=secs
DM_AxisUnits.Dim2=microstrain
DM_SampleRate=1.000000
DM_TimeBase=0.0
DM_ChanName=bridge_1
DM_UserMin=-583.220764
DM_UserMax=940.916199


DM_Start=
-439.779    -391.875    -680.114    1001.37 0
-442.068    -396.62 -680.945    1001.37 0
-443.571    -399.705    -680.639    1001.37 0
-445.598    -404.848    -684.662    1001.37 0

这些是我无法从 URL 获取的记录数据。我想保存它或以某种方式直播它。

【问题讨论】:

这个答案可能有助于了解如何实际流式传输数据:***.com/a/6558625 【参考方案1】:

任何各种 JS 图表库都应该能够通过 ajax 调用加载数据来为您呈现折线图。以下是一些:

http://www.fusioncharts.com

http://www.chartjs.org

http://www.jscharts.com

http://www.amcharts.com

...还有更多。只需找到最适合您的。

要运行每 x 秒刷新一次图表的 ajax 调用,请使用以下代码:

Call jQuery Ajax Request Each X Minutes

另外,看看 amCharts 论坛上的这个答案: http://www.amcharts.com/forum/viewtopic.php?id=12625

【讨论】:

【参考方案2】:

我建议你使用谷歌图表的Line plot。见this jsFiddle example of how to add data automatically。这很简单,就像使用data.addRow([ DATA_INDEX, VALUE_1, VALUE_2, ... ]);

这使用 jQuery 进行绘图初始化和“单击”事件。您必须创建一个循环才能检索数据并将其添加到绘图中。

【讨论】:

以上是关于如何使用 PHP、cURL、ajax 流式传输实时数据并将其呈现在折线图中的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 PHP api 在 Flutter 中流式传输 MySQL 数据库记录?

如何从 aws kinesis 流式传输实时数据以响应基于前端

如何使用 ffmpeg 将实时 m3u8 文件流式传输到 youtube rtmp

如何实时流式传输音频文件

您可以通过蓝牙实时流式传输相机吗?

PHP <---> FLASH持久连接(数据流式传输)