Précédent   Forum des professionnels en informatique > PHP > Langage > Fichiers
Fichiers Forum d'entraide sur les fichiers avec PHP. Avant de poster -> FAQ fichiers et Sources fichiers
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/03/2011, 00h51   #1
Invité régulier
 
Étudiant
Inscription : janvier 2007
Messages : 31
Détails du profil
Informations personnelles :
Âge : 25

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2007
Messages : 31
Points : 6
Points : 6
Envoyer un message via AIM à Couscouss sensei Envoyer un message via MSN à Couscouss sensei Envoyer un message via Skype™ à Couscouss sensei
Par défaut traitement des images distantes

Bonjour,

je suis actuellement en cour de développement d'un script de mise à jour pour mon portail immobilier.
J'ai réaliser un partenariat avec une grosse société éditrice d'un des plus gros logiciel immobilier.

Tous les soirs je reçois un fichier xml contenant le flux d'annonce.

Mais voila je rencontre un problème au moment de traiter les images.
J'utilise la fonction PHP copy() pour les récupérer et donc les gérer en interne.
J'exécute avant une autre fonction vérifiant si elle existe bien sur le serveur distant.
Mais cette opération est longue, vraiment trop longue (~1h pour traiter 1000 annonces, et le fichier en contient plus de 24000...)

voici mon code :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
// extrait du parsage du xml
// Parcours des differentes photos d'un bien
   foreach    ($annonce->liste_photos->children() as $photo) {
      $urlPhoto = (string)$photo;
 
      // On ne garde que 9 photos
      if($nbPhotos <= 9) {
         // Le lien vers la photo est-il valide ?
         if(is_image_existe($urlPhoto)) {
            $nbPhotos++;
 
            // On recupere le nom de fichier de la photo
            $urlPhotoParts = pathinfo($urlPhoto);
            $nomPhoto = $urlPhotoParts['basename'];
 
            // La photo est-elle presente sur le serveur ?
            if (array_key_exists($nomPhoto, $liste_photos_store)) {
               unset($liste_photos_store[$nomPhoto]);
            }
            else {
               // L'image n'existe pas sur le serveur, on la copie
               copy($urlPhoto, 'images/'.$nomPhoto);
               $array_photo_maj[$nomPhoto] = 1;
            }
 
            $photos[] = ID_AGENT.'/'.$nomPhoto;
         }
      }
   }
$array_key_exists est un tableau regroupant les photo déjà présente dans mon système. Cette vérification me permet de copier que les nouvelles photo

Cette fonction me permet de vérifier l'existance d'un fichier distant et notamment l'image dans mon cas. Sans cette fonction la copy() perd trop de temps s'il s'agit d'une images inexistante.
Code :
1
2
3
4
5
6
7
8
9
function is_image_existe($url) {
   ini_set('allow_url_fopen', '1');
 
   if (@fclose(@fopen($url, 'r'))) {
      return true;
   } else {
      return false;
   }
}
J'ai également des pistes par rapport à la localisation des images, j'ai l'impression que le contenu du dossier parent est accessible.
En effet quand j'ai "bidouiller" l'url de l'image (ex : http://photos.bestlogicielimmo.com/3...49348760_9.jpg) je remarque que j'obtiens toutes les images de l'agence 34093dans mon navigateur donc je me dit qu'elles sont surement accessible autrement et donc un traitement par lot serait peut être plus propice..


Merci d'avance

Couss
Couscouss sensei est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h28.


 
 
 
 
Partenaires

Hébergement Web