【问题标题】:Caching data fetched from API - php缓存从 API 获取的数据 - php
【发布时间】:2014-12-10 15:29:54
【问题描述】:

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

为了澄清我的观点,这是我想象的顺序:

  1. 首次向API请求获取数据
  2. 将数据保存在我的数据库中并查询用户需要什么,从而 最小化获取数据所需的时间以及 请求发送到服务器
  3. 自动/手动设置我要重新发送的特定时间安排 向 API 发出另一个请求,以查找是否已添加新数据

我的问题:我的方法是否可行且有效,或者所有这些都可以以更简单的方式完成吗?

更新:

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

  1. 每个请求返回的最大游览数为 100。
  2. 要获取旅游详细信息,返回的旅游 id 应该发送一个请求以获取与其相关的所有详细信息,因此我们谈论的是数千次旅行。到目前为止,尚无法获得确切的数据大小。

【问题讨论】:

  • 数据……多少钱? 2MB? 500MB?
  • @MarcoMura 请检查问题中的更新
  • 更新后:如果数据> 2MB,那么我建议您使用您的序列。否则,您可以启动动画并等待响应。
  • @MarcoMura 知道如何确定数据的大小吗?!
  • 获取并比较重量(每次将它们保存到一个文件中)与旅游号码:) avg 或类似的东西

标签: php caching scheduled-tasks


【解决方案1】:

我建议使用我的 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

【讨论】:

  • 关于您的库的安装、要求或先决条件的任何提示?!你的 github 链接几乎是空的
  • 至于现在,因为我还需要做更多进一步的测试和开发。据我所知的要求是。 (可选)APC:=> 3.0.13,PHP:=> 4.0.1,(可选)GD => 1,(可选)ImageMagic => 2.0.0
  • 但是如果您遇到任何问题或错误,请告诉我您当前的 PHP 设置,我会将其添加到文档中。
  • 嗯,那是一个 PHP 框架,所以在这种情况下这真的不重要,我来宾它需要 PHP 5 及更高版本。 (我还没有使用过这个框架)只要你知道将库放在框架中的哪个位置,以便你可以访问它。你应该做生意。我确实在这里找到了这篇文章,它应该可以帮助您继续前进,而不是装箱。 fideloper.com/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-05-16
  • 2017-05-09
  • 2021-08-24
  • 2020-10-22
  • 1970-01-01
  • 1970-01-01
  • 2023-02-16
相关资源
最近更新 更多