PHP cron调用导致不正确的数据

时间:2018-02-05 07:33:50

标签: php api cron

我有一个有趣的问题;我从外部提供商那里获取数据,为了完整起见,让我们说它会像这样回来:

[
    [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分钟运行一个cron作业到内部php脚本,执行以下操作;

  • 获取最新的行
  • 检查第三方API
  • 如果item_aitem_b不同 - >我们更新所有行
  • 如果没有,则脚本退出。
*/15 * * * * curl my-website.com/api/path-to-update?access_key=my_access_key

这导致数据a)延迟,b)偶尔会减少它应该是什么。

我是否需要设置像RabbitMQ这样的东西来处理数据/支票等的持续流式传输?

1 个答案:

答案 0 :(得分:0)

我最终创建了一个单独的电话,对#34;小时"进行最终检查。下一个小时15分钟的数据。

所以电话结束了;

$Api->data_fetch_new_hour();
$Api->data_update_currency_hour();
$Api->data_update_previous_hour();

全部运行在单独的cron作业上。