Eu mesmo resolvi construindo um simples PHP-Script para armazenar os dados em cache. Vou adicioná-lo aqui para conclusão.
<?php
function CheckCache($request)
{
if(file_exists("./cache/" . escapeFileName($request)))
{
if ((time()-filemtime("./cache/" . escapeFileName($request)) > 12 * 3600) != true) {
return true;
}
}
return false;
}
function ReciveFromCache($request)
{
return file_get_contents("./cache/" . escapeFileName($request));
}
function SetCache($request, $staticContent)
{
$update = (array)json_decode($staticContent, true);
$update['server']['cached'] = true;
file_put_contents("./cache/" . escapeFileName($request), json_encode($update));
}
function escapeFileName($filename)
{
return preg_replace('/[^A-Za-z0-9_\-]/', '_', $filename);
}
?>
Inclua na sua parte principal. A idade máxima do cache é definida em 12 * 3600
, em que 3600 é o tempo máximo em segundos (uma hora = 3600 segundos * 12 = 12 horas).
estou usando assim:
function reciveFromRiot($reqURL, $urlParams = "")
{
$api_key = "xxxx-xxxx-xxxx-xxxx";
$request = $reqURL . "?$urlParams&api_key=" . $api_key;
if(CheckCache($request))
{
$response = ReciveFromCache($request);
}
else
{
$response = file_get_contents("https://prod.api.pvp.net/api/lol/" . $request);
$responsecode = explode(" ", $http_response_header[0])[1];
if($responsecode != "200")
return false;
SetCache($request, $response);
}
return json_decode($response);
}
Vou deixar como é um exemplo para a API do Riot Game .
Nota que precisa haver uma pasta cache no mesmo local que o script.