Comment enregistré un fichier json en local?

[Résolu/Fermé]
Signaler
Messages postés
51
Date d'inscription
mardi 29 octobre 2013
Statut
Membre
Dernière intervention
18 février 2014
-
Messages postés
70
Date d'inscription
mercredi 11 décembre 2013
Statut
Membre
Dernière intervention
16 mai 2015
-
Bonjour à tous,

sur mon futur site (pas encore en ligne), je récupère les 15 derniers bookmarks de mon compte Diigo. Pour se faire je passe par l'API de Diigo et PHP file_get_contents() et je parse le JSON avec json_decode(), etc...

Mais je me dis que si le site de Diigo tombe en panne, j'aurais une erreur sur ma page d'accueil, donc j'aimerais bien afficher quand-même le contenu.

Alors ça serait bien si je pouvais récupérer le JSON de l'API et de l'enregistrer sur mon serveur pour le parser en local. Puis une fois ou deux par jour je pourrais lancer un cron job qui rafraîchirait le fichier JSON sur mon serveur.

Le seul problème c'est que je ne sais pas trop comment faire tout ça, je me demande même si c'est la meilleure solution?

Donc j'aimerais avoir vos conseils et aussi quelques pistes de solutions pour les réaliser...

Merci, bonne fin de journée!

3 réponses

Messages postés
8319
Date d'inscription
jeudi 22 mars 2007
Statut
Contributeur
Dernière intervention
8 février 2021
1 574
Salut,

ton idée n'est pas bête, mais au lieu de faire un cron, tu peux aller chercher tes infos sur diigo, si tu ne trouves rien, tu regardes en local, sinon, tu mets les données que tu as récupéré dans un fichier ou une base de données.

un json est une chaine de caractère, tu peux en faire ce que tu veux.
Messages postés
131
Date d'inscription
dimanche 13 janvier 2013
Statut
Membre
Dernière intervention
17 octobre 2015

je n'ai pas vu ton post
Messages postés
51
Date d'inscription
mardi 29 octobre 2013
Statut
Membre
Dernière intervention
18 février 2014
1
salut,
C'est exacte mais mon problème est que je n'arrive pas écrire les données récupéré dans un fichier en local.
En faite le contenu du fichier est vide alors que j'ai bien écrit les données.
Je ne sais pas d'ou vient le problème.!!
Messages postés
8319
Date d'inscription
jeudi 22 mars 2007
Statut
Contributeur
Dernière intervention
8 février 2021
1 574
montre ton code ?
Messages postés
131
Date d'inscription
dimanche 13 janvier 2013
Statut
Membre
Dernière intervention
17 octobre 2015

comme tu l'as dis, tu peut creer un fichiers dans lequel tu vas ecrire les informations de ton json que tu decode et apres du lire le contenu via php . est que c'est dans ce sens que ton post vise?
Messages postés
51
Date d'inscription
mardi 29 octobre 2013
Statut
Membre
Dernière intervention
18 février 2014
1
salut,
c'est ce que je comptais faire mais le problème est que je n'arrive pas a voir les données que j'ai écris dans le fichier en local.
En faite quand j'ouvre le fichier pour traitement je m'aperçoit qu'il est vide,pourtant j'ai bien écris les données.
Messages postés
70
Date d'inscription
mercredi 11 décembre 2013
Statut
Membre
Dernière intervention
16 mai 2015
15
Hello,

oui ton idée de départ est bonne, je te conseil même d'utilisé uniquement le fichier json que tu aura enregistré en local.

Pour moi tu gagnera en perf et évitera certaine lenteur dans le cas ou le json distant met du temps à répondre...

donc je tes gentillement écris le code pour enregistrer le fichier json tout les jours et sans cron ... tu peu modifier la condition sur la date pour faire des maj du fichier plus souvent : )

<?php	
	/* GET CACHE */
		if (!file_exists('cache/flux/'))  mkdir ('cache/flux/',0777); // si le dossier de cache existe pas
		//---
		// si le fichier existe et si la date du fichier et égale à celle du jour on réupère le fichier
		if(file_exists('cache/flux/ton_flux.json') && date('d',filemtime('cache/flux/ton_flux.json')) == date('d'))
		{
			$xmlJson = file_get_contents('cache/flux/ton_flux.json');
		}
	/* END GET CACHE */
		else
		{ // sinon (si il date pas d'aujourd'hui) on l'enregistre
		$urlJson = 'http://urldufluxoriginal.json';
		$xmlJson = file_get_contents($urlJson); 
		file_put_contents('cache/flux/ton_flux.json', $xmlJson);
		
		
		}
		
		// $xmlJson <= voilà ton flux json ;)