【问题标题】:Pseudo real-time data stream javascript and php伪实时数据流javascript和php
【发布时间】:2018-12-31 15:24:29
【问题描述】:

更新:我的印象是,这甚至不是发布此内容的正确网站。如果有人能指出我正确的方向,我会很感激......

我有一个现有的 PHP+MySQL 应用程序,它不是为呈现“实时”或类似的实时数据而构建的。但现在我需要构建一种将近乎实时的数据拉入应用程序并保持页面上数据新鲜的方法。此实时数据仅适用于应用程序中的 1 页。

查看了诸如 socket.io 和基于 PHP 的 websockets 库之类的东西,但这似乎有点矫枉过正,因为数据基本上来自 1 个来源并交付给 1 个人(客户端)。多个其他用户可以运行此过程,但每个用户都会带来自己的数据端点。那是......就像一年之后的事情。不过想想也不错。理想情况下,系统上有成百上千的用户,提取他们的实时数据。所以我希望它尽可能精简和低影响。

用户必须经过身份验证和授权才能使用数据。这已经融入了当前系统。

获取数据的 API(已由其他供应商构建)也不是流式传输的。它设置在 20 秒的 cron 上,因此每 20 秒就有一次新数据可用,这满足了客户的需求。

我目前的计划是做这样的事情......

  1. 每 20 秒在 cron 上拉取数据、组织并存储到数据库中(完成)
  2. 调整 #1,使其还对数据进行任何额外的专有计算,并在服务器上编译 + 写入 JSON 文件(用户独有),这是前端所需的确切数据(其他页面需要数据库数据)
  3. 创建基于 PHP 的小型服务,用于验证客户端提供的 JWT 并读取 JSON 文件
  4. 使用 JWT 编写 AJAX 前端以每 X 秒从 #3 轮询端点以进行授权

这一切似乎有点像我在重新发明轮子,或者遗漏了什么。这是一个现有的基于 PHP 的应用程序 (LAMP) 的事实确实有一些限制因素,但我觉得必须有一种更有效的方法来处理这个......这对我来说很新。此外,我对将在 LAMP 堆栈上运行的其他技术持开放态度,如果它能让事情变得更好的话。

【问题讨论】:

  • 有 4 种技术可以满足您的需求:AJAX、WebSockets、服务器发送事件和 WebRTC。但是,我强烈建议从简单的 AJAX 开始 - 过早的优化是邪恶的。
  • 这个问题太笼统了。询问有关技术/软件等方面的建议也是题外话。如果您有计划,请进行一些尝试,如果您在尝试中遇到一些特定问题,请返回。
  • 指南中这样写:What topics can I ask about here?“要求我们推荐或查找书籍、工具、软件库、教程或其他非现场资源的问题对于 Stack Overflow 来说是题外话,因为它们往往会吸引固执己见的答案和垃圾邮件。”。关于什么技术最好的建议可能引发激烈的争论,而这不是本网站的用途。 SO 适用于您对现有代码有特定问题时(这要求您首先选择技术)。
  • @David 会让评论部分爆出无法评估质量的软件推荐。我自己也看到过这样的线程,通常它们没有任何意义。
  • “但这无助于人们试图决定哪种技术最适合他们的情况” - 我明白了,但 Stackoverflow 根本就不是问这种问题的地方问题,因为结果通常最终不会是建设性的。

标签: javascript php mysql real-time


【解决方案1】:

我会说一开始就选择 API 解决方案 :) 因为它更适合架构,并且肯定是最少的工作量。此外,如果数据的“实时”感觉存在问题,您可以通过更频繁地轮询或引入长轮询来修复它,假设您更改了 cron 作业时间。

我的意思是,最终这一切都与所花费时间的影响有关,不要开始实施客户不关心的功能:)

要解决的最大问题是以符合您的要求并且在未来可扩展的方式来实现它。您仍然需要处理诸如分辨率、超时、请求数据时减少服务器处理等问题!

【讨论】:

    【解决方案2】:

    对我来说,如果您需要维护全局服务状态,因为单个客户端请求可能会影响所有其他连接的客户端请求,那么大多数服务器端脚本语言都不是最佳选择!另外进一步补充一点,如果你打算用 PHP 实现这样的东西,你将把自己设置为一个活生生的噩梦!为什么,因为简单地说,PHP(s) socket(s) 实现就是那么糟糕!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多