缓存从API获取的数据 - php

时间:2014-12-10 15:29:54

标签: php caching scheduled-tasks

我正在使用API​​来获取某些数据,但由于数量很大,我每次用户访问网站时都无法获取它。相反,我想到一次取出它,存储在数据库中并查询用户需要的任何内容并显示它。关键是我可能需要在其他时间向API发送请求以获取新添加的数据,对于此问题,我想要安排系统再次从API获取数据的某个时间或手动发送请求以获取新数据。

为了澄清我的观点,我想象一下这个序列:

  1. 第一次请求API获取数据
  2. 将数据保存在我的数据库中,然后查询用户需要的内容 最小化获取数据所需的时间以及数量 请求发送到服务器
  3. 自动/手动设置我要重新发送的特定时间表 另一个要求API查询是否已添加新数据的请求
  4. 我的问题:我的方法是否可行且有效,还是可以更轻松地完成所有这些工作?

    更新

    我将使用gAdventures API列出不同的游览及其详细信息。

    1. 每个请求返回的最大游览数为100。
    2. 要获取游览详细信息,返回的游览ID应该发送请求以获取有关它的所有详细信息,因此我们正在讨论数千次旅行。到目前为止,确切的数据大小都无法使用。

1 个答案:

答案 0 :(得分:0)

我建议使用我的Swiss Cache库。它支持基于文件的缓存和APC。甚至图像缓存(WIP)。如果数据量很大,我的库默认支持Gzip压缩。因此大量数据会自动压缩。

我的库的示例代码:

//Your API request function...
require_once("swiss_cache.php");

$cache = new swiss_cache();

$data = $cache->get("gAdventures_response");

if(!$data)
{
     $data = someFunctionThatCallsTheService();
     $cache->set("gAdventures_response", $data, 3600); //Save data for one hour.
}

只需确保在swiss_cache.php中设置缓存路径! :)如果您对我的图书馆有任何问题或疑问。只是给我发消息!正在处理文档。

https://github.com/ajm113/swiss_cache