Supprimer un cache local

Nouveau WRInaute
Bonjour

j'ai créer en local une recherche par API, j'ai creer un cache par jour en json dans mon localhost, (plus precisement chaque jour quand je fais appel a l'api celui ci se met dans un cache pour pouvoir y revenir dans la journée ou plus tard grace a un rechargement par date )

Je souhaiterais pouvoir affacer par exemple le premier cache créer en debut de semaine et faire sa chaque jour (donc par exemple le lundi 9 supprimerer le cache du lundi 2 et ainsi de suite pour chaque jour)

Je ne sais pas si je suis trés claire

Premiere question: est-ce possible ? et si oui comment dois-je proceder ?

En vous remerciant par avance pour votre aide
 
WRInaute accro
Si ton système de cache le permet (c'est souvent le cas), tu peux indiquer un TTL (Time To Live / durée de vie) de 1 semaine.
Sinon année + numéro de semaine comme clé et purge des caches précédents.

Si tu donnais plus d'infos sur le cache dont tu parles ce serait plus simple.
 
Nouveau WRInaute
Si ton système de cache le permet (c'est souvent le cas), tu peux indiquer un TTL (Time To Live / durée de vie) de 1 semaine.
Sinon année + numéro de semaine comme clé et purge des caches précédents.

Si tu donnais plus d'infos sur le cache dont tu parles ce serait plus simple.
Voici le code de mon cache, normalement j'avais mis une duré de 24h mais cela ne fonctionne pas

// Configuration du cache
$cacheFolder = DIR . DIRECTORY_SEPARATOR . 'cache';
if (!is_dir($cacheFolder)) {
mkdir($cacheFolder, 0777, true);
}
$cacheFile = $cacheFolder . DIRECTORY_SEPARATOR . 'sirene_' . $ENV['DEPARTEMENT'] . '' . $dateCible . '.json';
$cacheExpiration = 86400; // 24 heures
$statusMessage = "";
// On vérifie si un cache valide existe
if (file_exists($cacheFile) && (time() - filemtime($cacheFile) < $cacheExpiration)) {
$content = file_get_contents($cacheFile);
if ($content) {
$cacheData = json_decode($content, true);
$etablissements = $cacheData['data'] ?? [];
$nbTotalInsee = $cacheData['total'] ?? 0;
$statusMessage = "Données chargées depuis le cache local.";
}
}
else {
try {
do {
$data = $api->fetchEntreprises($dateCible, $curseur);
if ($curseur === '*') {
$nbTotalInsee = $data['header']['total'] ?? 0;
}
if (isset($data['etablissements'])) {
foreach ($data['etablissements'] as $e) {
$etablissements[] = $e;
}
}
$curseur = $data['header']['curseurSuivant'] ?? null;
} while ($curseur && $curseur !== '*');
if (!empty($etablissements)) {
file_put_contents($cacheFile, json_encode([
'total' => $nbTotalInsee,
'data' => $etablissements
]));
}
} catch (Exception $e) {
if (file_exists($cacheFile)) {
$cacheData = json_decode(file_get_contents($cacheFile), true);
$etablissements = $cacheData['data'];
$nbTotalInsee = $cacheData['total'];
$statusMessage = "Secours (L'API ne répond pas)";
}
}
}
 
WRInaute accro
Ca ne fonctionne pas ?
Tu dois créer un dossier de cache du jour et itérer les autres répertoires pour les supprimer.

Mais ce serait plus simple et performant avec 1 seul fichier cache (tu peux combiner les JSON en 1 seul) expiré via filemtime()
 
Nouveau WRInaute
J’ai juste un dossier nommé cache et tous le json sont créer directement dedans, actuellement dans les json je récupère les données de l'API sirene de l'INSEE, si je fusionne les json cela ne va pas être lourd ? chaque fichier cache créer le nom automatiquement par exemple celui d'aujourd'hui ce nome :

cache\sirene_11_2026-01-11.json

Chaque jour je créer un appel à l'api qui va recupérer les donné du jour -1 mois
 
WRInaute accro
Dans ce cas ce serait qd même bcp plus pratique d'enregistrer ces données dans une base de données SQL et de faire un "insert or update" en se basant sur siren/nic/siret.
 
  • Like
Reactions: kev

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut