Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 14-03-2016 13:43:21

nIQnutn
Modérateur
Lieu : Lyon
Distrib. : Jessie
Noyau : Linux 3.16-amd64
(G)UI : XFCE
Inscription : 16-03-2012
Site Web

PHP Mettre en cache un flux RSS distant

Bonjour,

J'essaie d'afficher un flux RSS sur mon site mais en sauvegardant les résultats.
Maintenant que j'ai quelque chose qui fonctionne, après modification je mets le résultat en cache (actualites.txt).
Je voudrais maintenant mettre en cache les images du flux RSS.


Je récupère l'URL des images, j'arrive à les stocker dans le dossier voulu et à les supprimer.
Il ne me reste plus qu'à substituer les URL des images distantes par les images stockées en cache mais je ne sais pas comment faire.


[== PHP ==]
<?php
// récupérer l'url des images
$path = 'data/documents/005/actualites.txt';
$file = file_get_contents($path);
$dom = new DOMDocument;

@$dom->loadHTML($file);
$links = $dom->getElementsByTagName('img');
foreach ($links as $link)
{    
 $re = $link->getAttribute('src');
    $a[] = $re;
}
?>

<?php
// télécharger les images en cache
foreach ($a as  $k => $lien) {
$path_parts = pathinfo("$lien");
echo $ext=$path_parts['extension'];
file_put_contents("data/documents/005/cache/$k.$ext", file_get_contents("$lien"));
}
?>

<?php
// supprimer les fichiers du cache
$dossier_cache="data/documents/005/cache/";
array_map('unlink', glob($dossier_cache."*"));
?>

<?php
// modifier les chemins pour utiliser les images en cache
?>
 



Quelqu'un à une idée ?

note: c'est également ici http://forum.pluxml.org/edit.php?id=48261

Hors ligne

#2 14-07-2016 17:04:15

MoxSite
Membre
Inscription : 28-07-2015

Re : PHP Mettre en cache un flux RSS distant

Bonjour,

En utilisant file_get_contents et file_put_contents avec les bons liens, ça devrait marcher sans problème. Regarde si ton serveur (php.ini) te permet le téléchargement depuis les liens externe.

Pour la prod, il faut faire attention et ne pas faire confiance à file_get_contents, les extensions ou $_FILES. file_get_contents ne fait que copier des données. Il faut vérifier les données avant de les exécuter. Depuis PHP 5 il y a une librairie native qui permet de contrôler (le type MIME) des téléchargement coté serveur.

Hors ligne

Pied de page des forums