IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

probleme de copie de photo depuis URL [PHP 5.6]


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Inscrit en
    Juin 2009
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 57
    Points : 48
    Points
    48
    Par défaut probleme de copie de photo depuis URL
    Bonjour,

    J'ai un script qui marchait très bien jusqu'à peu.
    Il permet de copier des photos depuis un site vers un dossier spécifique d'un site hébergé chez OVH.

    OK, il n'est pas très propre, mais il marchait bien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    echo "Ouverture du fichier $fichier <br />\n";
    $fichierouvert = fopen ($fichier_source, "r");
    $contenu ="";
    while (!feof($fichierouvert)) {
    	$contenu .= fread($fichierouvert, 8192);
    }
    fclose ($fichierouvert);
    $fichierouvert = fopen ($fichier_cible, "w+");
    if ( !fwrite($fichierouvert, $contenu)) {
    	echo "Impossible d'?crire dans le fichier ($filename)";
    	exit;
    }
    fclose ($fichierouvert);
    Depuis janvier 2016, j'avais régulièrement des photos qui manquaient à l'appel.
    Je devais relancer le script plusieurs fois pour qu'elles arrivent toutes (500 photos max et 100-110ko par photo).

    A l'occasion de la mise à jour de mes divers scripts php (pour compatibilité php 5.6), j'ai réécris le script :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if (!copy($valeur, $fichier_cible)) {
    	echo "La copie $valeur du fichier a échoué..."."<br />\n";
    } else {
    	echo "La copie $valeur du fichier a réussi..."."<br />\n";
    }
    Et systématiquement, il arrive à copier 49 fichiers et à partir du 50ème, la copie échoue.

    J'ai alors éssayé de passer par Curl :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $ch = curl_init($valeur);
    $fp = fopen($fichier_cible, 'wb');
     
    curl_setopt($ch, CURLOPT_FILE, $fp);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_exec($ch);
    curl_close($ch);
    fclose($fp);
    Même résultat : uniquement les 49 premiers fichiers qui arrivent correctement. Les autres, ils font tous 0ko

    Quelqu'un aurait-il une idée ?

    Configuration :

    Offre OVH-Mediaplan
    PHP 5.6.17
    Espace disque : 3.56 Go / 22 Go
    Traffic utilisé : 2.14 Go / 1.6 To



    Merci d'avance.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Et systématiquement, il arrive à copier 49 fichiers et à partir du 50ème, la copie échoue.
    Avec quelle erreur ?

    Le site distant n'apprécie peut être pas des requêtes répétées.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre du Club
    Inscrit en
    Juin 2009
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 57
    Points : 48
    Points
    48
    Par défaut
    Merci de vous pencher sur mon problème.
    Je n'ai pas de message d'erreur.
    Avec la commande copy, le fichier n'est pas copié, alors que avec Curl, il est copié mais sa taille est de 0ko.

    Cela ne vient pas du serveur d'origine car en local sur ma machine cela fonctionne sans problème.

    Michel

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Est-ce que ton serveur affiche les erreurs ? As-tu consulté les logs ? As-tu contrôlé la valeur de retour de copy ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre du Club
    Inscrit en
    Juin 2009
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 57
    Points : 48
    Points
    48
    Par défaut
    bonjour,

    Je n'ai trouvé aucune erreur dans les logs du serveur OVH.

    J'ai modifié le code pour tracer les erreurs dans CURL.
    Et voila ce que j'obtiens pour chaque photo non copiée :

    Code Erreur Curl : 56
    Detail Erreur Curl : Recv failure: Connection reset by peer
    Je pense que c'est un problème côté OVH car j'ai de nouveau essayé en local et je n'ai aucun problème.

    qu'est-ce qui pourrait bloquer sur un hébergement mutualisé OVH ?

    Merci d'avance.

  6. #6
    Membre du Club
    Inscrit en
    Juin 2009
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 57
    Points : 48
    Points
    48
    Par défaut
    Bonjour,

    Le problème est réglé.

    Pour info, Il s'agit d'un site internet pour une agence immobilière.
    Le script va chercher les différentes informations des annonces sur le site web de l'éditeur qui gère les annonces dans l'agence.
    Leur système est le suivant :
    Dans l’agence immobilière, ils renseignent un logiciel interne qui met à jour une base de donnée chez l'éditeur du logiciel.
    Ce cette façon, il est possible de récupérer ces informations + photos pour renseigner un site internet par l'intermédiaire d'une URL spécifique fournie par l'éditeur du logiciel.
    Ces informations sont fournies dans un fichier XML qu'on récupère via une URL spécifique pour chaque agence immobilière.
    Dans le fichier XML, on a l'ensemble des informations des annonces avec les URL permettant de récupérer les photos.
    En parsant le XML, on renseigne la BDD du site internet et on récupère les photos.


    Je me sus rendu compte que le traitement en local ne posait pas de problème mais que c'était plus lent que sur le site hébergé sur OVH.
    J'ai donc ajouté un usleep(70000) dans mon script pour le ralentir, et là ça marche.

    Je pense que du côté du serveur source, il doit y avoir des systèmes de sécurité qui me bloque lorsque je fais trop d'accès par seconde.

    Merci de votre aide.

    Michel

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Oracle] Copie LONG RAW depuis un TRIGGER
    Par DarkBassRider dans le forum Oracle
    Réponses: 1
    Dernier message: 09/08/2006, 20h22
  2. [FTP] Probleme de copie de fichier en reseaux avec easphp
    Par needles94000 dans le forum Langage
    Réponses: 17
    Dernier message: 29/03/2006, 15h24
  3. recuperer argument depuis url
    Par jejam dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 06/01/2006, 11h41
  4. [Tableau]Problèmes avec copie de tableau
    Par Itachi-san dans le forum Collection et Stream
    Réponses: 13
    Dernier message: 25/11/2005, 17h23
  5. [easystruts] probleme de copie des *.tld dans web-inf
    Par champion dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 23/08/2004, 11h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo