Aller au contenu
yhugo

Enregistrer dynamiquement un fichier JSON sur son serveur

Noter ce sujet :

Recommended Posts

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!

Partager ce message


Lien à poster
Partager sur d’autres sites

Ce que je fais sur beaucoup de sites, au travail :

- J'appelle le fichier distant, avec un timeout (J'utilise cURL au lieu de file_get_contents).

- J'enregistre le résultat localement

- Je parse le fichier local

Si jamais le fichier distant ne répond pas dans le temps imparti, je passe tout de suite à l'étape 3 : je parse le fichier local, qui contient fatalement la dernière sauvegarde du fichier.

Partager ce message


Lien à poster
Partager sur d’autres sites

Salut

j'ai fait la même procédure mon site n'est pas encore en ligne.

Modifié par captain_torche
Inutile de citer le message précédent; on vient de le lire.

Partager ce message


Lien à poster
Partager sur d’autres sites

Ce que je fais sur beaucoup de sites, au travail :

- J'appelle le fichier distant, avec un timeout (J'utilise cURL au lieu de file_get_contents).

- J'enregistre le résultat localement

- Je parse le fichier local

Si jamais le fichier distant ne répond pas dans le temps imparti, je passe tout de suite à l'étape 3 : je parse le fichier local, qui contient fatalement la dernière sauvegarde du fichier.

Merci capitaine_torche...

Que penses-tu de ce code? Je ne m'y connais pas beaucoup en cURL, mais ça semble bien fonctionner... Comment l'optimiser?


<?php
$url = 'https://secure.diigo.com/api/v2/bookmarks?key=****';
$path = "diigo.json";
$timeout = 10;
$http_auth_ident = '***'; // username:password
$ch = curl_init($url);

curl_setopt($ch, CURLOPT_FRESH_CONNECT, true);
curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);

if (preg_match('`^https://`i', $url)){
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
}

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_setopt($ch, CURLOPT_USERPWD, $http_auth_ident);

$data = curl_exec($ch);
$httpStatusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

if ($httpStatusCode == 200) {
$fp = fopen($path, 'w');
curl_setopt($ch, CURLOPT_FILE, $fp);
$data = curl_exec($ch);
fclose($fp);
}

curl_close($ch);
?>

Merci!

Salutations

Modifié par Dadou

Partager ce message


Lien à poster
Partager sur d’autres sites

J'ai édité ton code, on voyait tes identifiants

Partager ce message


Lien à poster
Partager sur d’autres sites

Dadou: c'est gentil, mais ce n'était pas de vrais identifiants happy.gif

Ciao, bonne fin de journée

Modifié par yhugo

Partager ce message


Lien à poster
Partager sur d’autres sites

Dadou: Je viens de relire mon code que tu as modifié, et tu as pas seulement masqué les identifiants tu as viré des variables?! thumbdown.gif

Modifié par yhugo

Partager ce message


Lien à poster
Partager sur d’autres sites

Seulement tout ce qu'il y avait après key.

De toute façon, elles ne sont pas nécessaires pour ta question

Partager ce message


Lien à poster
Partager sur d’autres sites

L'appel de cURL semble correct. Il faut juste que tu mettes un timeout plus court (Dix secondes, c'est énorme).

Ensuite, il faudrait écrire quelque chose dans le fichier (Là, tu ne fais rien d'autre que récupérer une seconde fois le contenu de curl).

Et pour finir, il faudrait récupérer le contenu du fichier, après le curl_close.

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant

×