【问题标题】:Redrawing a graph dynamically every second每秒动态重绘图表
【发布时间】:2012-05-27 10:04:59
【问题描述】:

我正在从不断更新的文本文件中读取数据,大约每 0.5-1 秒一次。目前我已经通过在我的 PHP 脚本中使用刷新头来解决它,并且我正在使用 jpgraph 库来生成图形。但是问题是图形相当大,大约 1500x900,因此图像最终会花费整个刷新时间来重新加载。

我想知道是否有其他方法可以生成图表而不必使用 jpgraph 向客户端发送这么多数据?我认为我可能使用错误的库。

或者我应该只使用客户端图表章程并将服务器上的文本文件的访问权限授予客户端?

【问题讨论】:

  • 您无法在 PHP 方面做出任何改进。我建议从 PHP 生成的图表转移到 AJAX 解决方案。
  • 将图形绘制逻辑移至客户端。 JavaScript 是你的朋友。
  • 这也是我的想法。现在我正在做一个临时解决方案,通过每隔几秒而不是每秒绘制更多点来绘制图表,但似乎客户端解决方案要好得多。当然问题是我几乎没有 AJAX 经验!不过,我会尝试阅读它。谢谢大家的帮助。

标签: php graph jpgraph


【解决方案1】:

使用 javascript 来获取 JSON 格式的图形数据会更有意义,同时使用像 Google Charts 这样的客户端图表 - 太棒了,试试吧。

https://developers.google.com/chart/

【讨论】:

  • 谢谢!我之前评论过我对 AJAX 了解不多,看来这个库就是我的答案!
【解决方案2】:

我会将原始文本数据的大小(当然用 gzip 压缩)与生成的图像的大小(大多数图像格式已经按定义压缩)进行比较。压缩文本可能要小得多,因此将是一个不错的选择。这假设客户端没有任何可能导致图形渲染和处理过于昂贵的实际 CPU 功率限制。

您还可以查看保持与服务器的套接字连接打开,并在新数据到来时推送新数据。这将减少每个 http 请求的固定成本开销。

我不知道您的数据,但也许您只能发送数据的增量?增量是实际发生变化的数据点。

【讨论】:

  • 数据多为短整数,不知道delta会不会有很大的不同?但是谢谢你的详细回答。我正在考虑以 txt 格式发送数据,但流式传输数据似乎是一个更好的主意!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-06-23
  • 2013-04-14
  • 1970-01-01
  • 1970-01-01
  • 2013-07-24
  • 2018-11-02
  • 1970-01-01
相关资源
最近更新 更多