Cette fonction illustre comment réduire le nombre d'appels à une API externe en stockant temporairement le résultat dans un fichier cache. Si les données ont été récupérées récemment, elles seront servies depuis le cache au lieu de refaire la requête.
function getApiData($url) {
$cacheFile = sys_get_temp_dir() . '/cache_' . md5($url) . '.json';
$cacheTime = 3600; // 1 heure
if (file_exists($cacheFile) && (time() - filemtime($cacheFile)) < $cacheTime) {
return json_decode(file_get_contents($cacheFile), true);
}
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($httpCode === 200) {
file_put_contents($cacheFile, $response);
return json_decode($response, true);
} else {
return null;
}
}
Le code vérifie l'existence d'un cache valide (moins d'une heure) pour éviter des appels API redondants. Si le cache n'est pas valide, il effectue une requête avec cURL, stocke la réponse et la renvoie.