更新:我得到的印象是,这甚至不是正确的网站张贴这一点。如果有人能给我指出正确的方向,我会很感激。。。
我有一个现有的php+mysql应用程序,它不是为了呈现“实时”或类似的实时数据而构建的。但现在我需要构建一种方法,将几乎实时的数据拉入应用程序并保持页面上的数据新鲜。此实时数据仅用于应用程序中的1页。
查看了socket.io和基于php的websockets库,但这似乎有些过分,因为数据基本上来自一个源,并被传递给一个人(客户机)。其他多个用户可以运行此进程,但每个用户都会带来自己的数据端点。那是。。。一年之后。但想想也不错。在理想情况下,系统上会有成百上千的用户来提取他们的实时数据。所以我希望这是流线型和低影响尽可能。
用户必须经过身份验证和授权才能使用数据。这已经融入到当前系统中。
获取数据的api(已经由另一个供应商构建)也不是流式传输。它设置在一个20秒的cron上,因此新数据每20秒可用一次,这满足了客户机的需要。
我现在的计划是这样做。。。
每隔20秒在cron上拉一次数据,组织数据并将其存储到数据库中(完成)
调整#1,这样它还可以对数据进行任何额外的专有计算,并在服务器上编译并写入一个json文件(对于用户来说是唯一的),这是前端所需的确切数据(其他页面需要db数据)
创建一个小型的基于php的服务,它验证客户机提供的jwt并读取json文件
使用jwt授权,每x秒将ajax前端写入#3轮询端点
这一切似乎有点像我可能是重新发明车轮,或错过了什么。事实上,这是一个现有的基于php的应用程序(lamp)有一些限制因素,但我觉得必须有一个更有效的方法来处理这个问题。。。这对我来说很新鲜。另外,如果能让事情变得更好的话,我对运行在灯堆上的其他技术持开放态度。
2条答案
按热度按时间juud5qan1#
对我来说,如果您需要维护全局服务状态,因为单个客户端请求可能会影响所有其他连接的客户端请求,那么大多数服务器端脚本语言都不是最佳选择!另外,如果你打算用php实现这样的东西,你将为自己设置一个活生生的噩梦!为什么,因为简单地说,php(s)socket(s)实现是那么糟糕!
jv4diomz2#
我想说,一开始就采用api解决方案:)因为它更适合体系结构,而且肯定工作量最小。另外,如果数据的“实时”感觉有问题,您可以通过更频繁地轮询或引入长轮询来修复它,假设您更改cron作业时间。
我的意思是,归根结底,这一切都是为了影响所花的时间,不要开始实施客户不关心的功能:)
要解决的最大问题是以一种适合您的需求并且在某种程度上是可扩展的方式来实现它。您仍然需要处理诸如解析、超时、请求数据时减少服务器处理等问题!