【发布时间】:2023-03-11 09:27:01
【问题描述】:
我有一个有趣的问题;我从外部提供者那里获取数据,为了完整起见,假设它是这样返回的:
[
[id: 1pm, item_a: 55, item_b: 180], // hour's passed so data is finished.
[id: 2pm, item_a: 55, item_b: 180], // hour's passed so data is finished.
[id: 3pm, item_a: 55, item_b: 180], // hour's passed so data is finished.
[id: 4pm, item_a: 55, item_b: 180], // hour's passed so data is finished.
[id: 5pm, item_a: 0, item_b: 0], // current hour - data keeps updating periodically
]
我每小时运行一次 cron 调用以获取最新一小时的元素(即上面组中的 5pm)。
注意item_a 和item_b 的初始值为0。这是因为该小时的数据不断从第三方更新。这不是在设定的时间段内,这让我很难准确地收集数据。由于我正在为大约 1400 个不同的对象获取数据,它们每个都会在第三方端以随机间隔进行更新,这会在时间结束后给我留下不正确的数据。
我目前每 15 分钟对执行以下操作的内部 php 脚本运行一次 cron 作业;
- 获取最新的行
- 检查第三方 API
- 如果
item_a或item_b不同 -> 我们更新所有行 - 如果不是,则脚本自行退出。
*/15 * * * * curl my-website.com/api/path-to-update?access_key=my_access_key
这会导致数据 a) 延迟,并且 b) 有时会少于应有的数据。
我是否需要设置 RabbitMQ 之类的东西来处理数据/检查/等的持续流式传输?
【问题讨论】:
-
可能 API 调用和更新本地数据需要一些时间来更新,或者对 API 的某些调用太慢而无法同步响应。试试看:docs.guzzlephp.org