logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

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 12:43:21

Anonyme-8
Invité

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

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

MoxSite
Membre
Distrib. : Debian Buster (Testing+SID)
Noyau : Linux 4.18.0-1-amd64
(G)UI : Gnome 3.30
Inscription : 27-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.

Debian Stretch sur mes serveurs. Buster (Testing+SID) sur mon PC. Config mini ITX :
CM : ASRock Fatal1ty AB350 Gaming ITX/ac. Ram : Corsair 8GB DDR4. CPU : Ryzen 5 1600. CG : MSI GeForce GT 1030 2GH OC. 120GB SSD + 1TB pour la partition home.
Usage : programmation, bureautique, compatibilité,  photoshop (virtualisation).

Hors ligne

Pied de page des forums