首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >实时拉取API数据并发布

实时拉取API数据并发布
EN

Stack Overflow用户
提问于 2019-08-07 23:45:18
回答 1查看 202关注 0票数 1

关于我正在工作的网站的信息:

足球现场比分相关网站

API提供足球比分的实时数据(他们没有网络挂钩)

我想要的:

想要在前端提供实时分数吗

另外,我想把这些数据暂时保存在Redis中,在比赛结束后,我想从Redis推送到数据库。

最好不要使用任何外部JS库( http://socket.io ),pusher等。Laravel Broadcasting+ Redis是我的首选方式,因为我不需要pusher或socket js代码来加载。

这个问题的一部分:

第1部分:将外部API数据拉取到数据库(或Redis)。-->到目前为止,我设法将数据从API拉到数据库的唯一方法是,我已经创建了一个路由,它将触发从外部API加载数据。同样,到目前为止,这也是无用的,因为API中的实时分数数据几乎每秒更新一次,到目前为止,我需要触发路由(或每秒刷新URL )才能从API中提取数据。另外,不要忘记,将API数据完全传输到数据库至少需要2-3秒。此部分与是否仅当用户(前端正在请求)时拉取无关。即使没有用户在线,它也应该做好它的工作。

那么,我的问题是,什么是最好的,最有效的,最完整的方式来实时提取API数据,并将其保存在Redis中,直到匹配完成?(查看接口数据即可了解匹配状态示例:{match_id{ status : finished}}xxxx)因为匹配完成后,我会将Redis推送到数据库中。

第2部分:从数据库(或Redis)实时发布数据。这个对我来说比第一部分简单,我已经找到了通过pusher和socket.io实时发布->数据的方法。但除此之外,在我的场景中最好的方法是什么?另外,如果我必须使用Redis+ Laravel广播的组合,我是否需要任何JS库?

谢谢你的建议!

EN

回答 1

Stack Overflow用户

发布于 2019-08-09 02:32:09

第1部分的可能答案:

我会使用Task Scheduling->daily();->hourly();一个Artisan Console命令,以检查下一场足球比赛是什么时候,并在matches表中写入一条记录,或者在开始/结束时间发生变化时更新现有记录。

每隔几秒执行一次的->cron('* * * * *');上的另一个控制台命令(更改为所需的秒数)可以检查matches表;如果当前时间在匹配的starts_atends_at之间,则检索实时数据。

为了防止同时多次执行命令(如果由于某种原因,API调用需要更长的时间),可以使用Symfony的Lockable Trait

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57398085

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档