如何在Laravel中创建自定义数据检索类?

时间:2016-03-13 21:47:47

标签: php laravel laravel-5.2 laravel-facade

我目前正在使用Laravel构建一个小应用程序,并希望在仪表板上显示天气。为此,我使用了一个访问Forecast.io API的Composer包。但是,由于该API对每天免费通话的速率限制,我想使用Laravel工具缓存数据,并且每隔几分钟就更新一次。

要做到这一点,我可以想到两种方式:

  1. 创建一个自定义类,在轮询之前检查缓存中的数据,然后让缓存数据在x分钟后过期。
  2. 在Laravel中创建一个cronjob,它只是定期更新缓存中的天气数据。
  3. 从我的观点来看,第一个选项似乎更好,因为它保证我将始终拥有可用的数据,即使缓存已清空。除此之外它似乎更清洁。

    问题是:我不知道如何在Laravel中实现这样的类,也无法在官方文档中找到任何内容。我的愿望是,我可以简单地调用一个Facade,它给我数据,其余的在后台处理。我只需要知道在哪里放置这样的Facade以及如何设置它。

    此致

    Heiko

1 个答案:

答案 0 :(得分:1)

你甚至不需要一个只使用

的类
$weather = Cache::remember('weather', $minutes, function() {
    // Your API call
    return $weather;
});

您可以在此处查看文档https://laravel.com/docs/5.2/cache#retrieving-items-from-the-cache

此方法的缺点是如果缓存为空,您的用户将等待API调用...

如果您只想将值存储在缓存中然后检索它,您仍然可以使用cron。