Comment enregistré un fichier json en local?

Résolu
stgcici Messages postés 51 Date d'inscription   Statut Membre Dernière intervention   -  
enqueteactualite Messages postés 70 Date d'inscription   Statut Membre Dernière intervention   -
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!
A voir également:

3 réponses

ThEBiShOp Messages postés 8411 Date d'inscription   Statut Contributeur Dernière intervention   1 566
 
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.
0
kherox Messages postés 131 Date d'inscription   Statut Membre Dernière intervention   1
 
je n'ai pas vu ton post
0
stgcici Messages postés 51 Date d'inscription   Statut Membre Dernière intervention   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.!!
0
ThEBiShOp Messages postés 8411 Date d'inscription   Statut Contributeur Dernière intervention   1 566
 
montre ton code ?
0
kherox Messages postés 131 Date d'inscription   Statut Membre Dernière intervention   1
 
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?
0
stgcici Messages postés 51 Date d'inscription   Statut Membre Dernière intervention   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.
0
enqueteactualite Messages postés 70 Date d'inscription   Statut Membre Dernière intervention   16
 
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 ;)
		

0