每30秒一次Google API请求

时间:2014-03-26 16:56:23

标签: php caching google-api-php-client

我正在使用Live Reporting Google API检索活动用户并在移动应用程序中显示数据。在我的应用程序上,我想向我的服务器上的PHP脚本发出HTTP请求,该脚本应该返回结果。 但是,我在Google文档上看到,最好不要使用API​​超过30秒来请求数据。 我不想使用像cron作业这样的重型方法来存储数据库中的值。所以我想知道是否有办法缓存我的PHP scrpit的内容,只有当缓存过期时才会执行API请求。 有没有类似的方法呢?

2 个答案:

答案 0 :(得分:1)

另一种方法是自己实现一个非常简单的缓存。

$googleApiRequestUrlWithParameter; //This is the full url of you request
$googleApiResponse = NULL; //This is the response by the API

//checking if the response is present in our cache
$cacheResponse = $datacache[$googleApiRequestUrlWithParameter];
if(isset($cacheResponse)) {
  //check $cacheResponse[0] for find out the age of the cached data (30s or whatever you like
  if(mktime() - $cacheResponse[0] < 30) {
    //if the timing is good
    $googleApiResponse = $cacheResponse[1];
  } else {
    //otherwise remove it from your "cache"
    unset($datacache[$googleApiRequestUrlWithParameter]);
  }
}

//if you do no have the response
if(!isset($googleApiResponse)) {
   //make the call to google api and put the response in $googleApiResponse then
   $datacache[] = array($googleApiRequestUrlWithParameter => array(mktime(), $googleApiResponse)
}

如果您的数据与用户会话相关,则可以将$ dataca存储到$ _SESSION中 http://www.php.net/manual/it/reserved.variables.session.php

或者定义$ datacache = array();作为一个全局变量。

答案 1 :(得分:0)

在PHP中有很多缓存方法,在PHP中管理缓存的简单/历史方法是使用APC http://www.php.net/manual/book.apc.php

也许我没有正确地理解你的问题。