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