Php 实时拉取API数据并发布

Php 实时拉取API数据并发布,php,laravel,redis,socket.io,Php,Laravel,Redis,Socket.io,关于我正在工作的网站的信息: 与足球现场得分相关的网站 API提供足球得分的实时数据(他们没有网络挂钩) 我想要的是: 想要在前端交付实时分数吗 另外,我想将数据暂时保存在Redis中,在比赛结束后,我想从Redis推送到数据库中 最好不要使用任何外部JS库()、pusher等。Laravel广播+Redis是我的首选方式,因为我不需要加载pusher或socket JS代码 部分问题: 第1部分:将外部API数据拉入数据库(或Redis)。 -->到目前为止,我成功地将数据从API拉到数据库的

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

与足球现场得分相关的网站

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

我想要的是:

想要在前端交付实时分数吗

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

最好不要使用任何外部JS库()、pusher等。Laravel广播+Redis是我的首选方式,因为我不需要加载pusher或socket JS代码

部分问题:

第1部分:将外部API数据拉入数据库(或Redis)。 -->到目前为止,我成功地将数据从API拉到数据库的唯一方法是,我创建了一个路由,该路由将触发来自外部API的加载数据。同样,到目前为止,这是毫无用处的,因为API中的live score数据几乎每秒更新一次,到目前为止,我需要触发路由(或每秒刷新URL)来从API中提取数据。另外,不要忘记,将API数据完全传输到数据库至少需要2-3秒。此部分不取决于是否仅在用户(前端正在请求)的情况下拉动。即使有0个用户在线,它也应该完成它的工作

所以,我的问题是,什么是实时提取API数据并将其保存在Redis中直到匹配完成的最佳、最有效和完整的方法?(我们可以通过检查API数据示例:{match_id{status:finished}}}xxxx来了解匹配的状态)。因为比赛结束后,我会将Redis推送到数据库

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


谢谢你的建议

第1部分的可能答案:

我会使用
->daily()
->hourly()
用于检查下一场足球比赛何时开始的命令,并在
matches
表中写入记录,或在开始/结束时间发生变化时更新现有记录

->cron('***')上的另一个控制台命令(更改为所需的秒数)可以检查
匹配项
表;如果当前时间介于匹配的
开始时间
结束时间
之间,则检索实时数据


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

第1部分的可能答案:

我会使用
->daily()
->hourly()
用于检查下一场足球比赛何时开始的命令,并在
matches
表中写入记录,或在开始/结束时间发生变化时更新现有记录

->cron('***')上的另一个控制台命令(更改为所需的秒数)可以检查
匹配项
表;如果当前时间介于匹配的
开始时间
结束时间
之间,则检索实时数据


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

关键是,“每隔几秒钟”可能会有问题,因为它是一个实时评分平台,我需要能够提供实时,因此,我在寻找如何检索实时数据,而不是任务调度的时间/条件。正如您所说,假设在任务调度之后,我们刚刚找到了一个匹配项,所以我正在寻找能够从API中提取数据并将其保存在我的redis/数据库中的东西。我们可以每隔几秒钟做一次http请求,从API中提取数据,但效率很低,每次都要等几秒钟才能得到更新的数据。我正在寻找像(1/3)流式传输实时API数据这样的东西。在那之后,第二部分对我来说比较容易。我可以通过socket.io或pusher等方式发送此信息。。。在一个理想的情况下,我正在寻找这样的东西:任务调度触发一个命令,告诉match现在开始,xxx是高效、可靠和低成本的资源。(3/3)相当大的挑战。抱歉,我的知识还不够。如果我是你,我会发布一个新问题,重点是第一部分,因为这一部分已经有几天了,很少有人关注。重点是,“每隔几秒钟”可能会有问题,因为这是一个实时评分平台,我需要能够实时发布,因此,我在寻找如何检索实时数据,而不是任务调度的时间/条件。正如您所说,假设在任务调度之后,我们刚刚找到了一个匹配项,所以我正在寻找能够从API中提取数据并将其保存在我的redis/数据库中的东西。我们可以每隔几秒钟做一次http请求,从API中提取数据,但效率很低,每次都要等几秒钟才能得到更新的数据。我正在寻找像(1/3)流式传输实时API数据这样的东西。在那之后,第二部分对我来说比较容易。我可以通过socket.io或pusher等方式发送此信息。。。在一个理想的情况下,我正在寻找这样的东西:任务调度触发一个命令,告诉match现在开始,xxx是高效、可靠和低成本的资源。(3/3)相当大的挑战。对不起,我的知识还不够。如果我是你的话,我会发布一个新的问题,集中在第一部分,因为这个问题已经有几天了,很少有人关注。