每天取一次laravel 5.2


Fetch once a day laravel 5.2

考虑以下情况。

我正在使用以下公共端点来获取数据:https://public-crest.eveonline.com/market/prices/

type下的详细信息存储在数据库中,每天凌晨1点通过laravel任务提取一次。

太好了,那部分完成了。现在让我们假设用户想了解更多关于:

"中型辅助屏蔽助推器"

他们会点击一个链接,该链接对href进行api调用并获取数据。我会这样做:如果数据库中存在的数据使用该数据,否则进行调用并将其存储在数据库中。

这也很容易。

最困难的部分是:如果数据库没有这些详细信息,或者任务运行一天后,请进行调用。现在,存储信息的表确实有created_atupdated_at时间戳,所以我想说:

当用户点击链接查看更多详细信息时,请检查A)项目详细信息在数据库中,好的,现在检查B)是否为24自上次提取数据以来的小时,请通过比较更新时间为24小时前。

这是正确的方法吗?

自过期数据通常存储在缓存中(例如memcached)。我认为你这样做会更理性:

$content = Cache::remember('page' . $href, 1440, function() {
    return $this->fetchPage($href);
});

其中fetchPage()是一个在$href处获取页面的假想方法。因此,如果有人在24小时内请求相同的URL,将使用缓存值。无需在数据库中填充过期过快的值并进行清理。