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 :

Téléchargement automatique XML


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 41
    Points : 17
    Points
    17
    Par défaut Téléchargement automatique XML
    Bonjour à tous,

    Ma situation est la suivante : j'ai un compte sur un site (login et mot de passe donc) et il me donne accès à des téléchargements de fichiers xml compressés. Ils sont régulièrement mis à jour et leur contenu doit être inséré dans une base de données. Je peux récupérer le lien activant le téléchargement, fonctionnel même si je ne suis pas loguée.

    Ce que je souhaiterai, c'est faire en sorte de télécharger automatiquement cette xml une fois par semaine par exemple sur le serveur où se trouve le script qui traite et insère les données.

    Ca peut faire penser à un webservice sans en être un. Sinon j'ai entendu parler du module php curl. Est-ce une solution ?

    Je vous remercie par avance pour votre aide.

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 41
    Points : 17
    Points
    17
    Par défaut
    Re-bonjour,

    Je me permets de relancer le sujet. A défaut de préciser comment s'y prendre, pourriez vous au moins dire si cela est possible ou non ?

    Serai-je obligée de demander au client de remplacer le fichier xml manuellement de manière hebdomadaire ?

    Je vous remercie par avance pour votre aide.

  3. #3
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 835
    Points
    2 835
    Par défaut
    Bonjour,

    Si j'ai bien compris votre problème, il n'est pas possible d'accéder au contenu de la machine d'un client. Seul ce dernier peut souhaiter envoyer quelque chose au serveur...

    Par contre, il est possible de par exemple installer un serveur FTP, qui ne sera alors plus vraiment considéré comme un client lambda : le serveur PHP pourra alors se connecter au serveur FTP du client grâce à un login et un pass.

    J'espère avoir répondu à votre question

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 41
    Points : 17
    Points
    17
    Par défaut
    Merci pour votre réponse.

    Je viens à l'instant d'envoyer un mail au site proposant le service pour voir si un accès ftp peut être ouvert.

    En espérant que cela soit faisable, pourriez-vous me préciser quelles sont les démarches à suivre par la suite ?

    Je vous remercie d'avance ^^.

  5. #5
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 835
    Points
    2 835
    Par défaut
    hmm je me suis mal exprimé je pense.

    Le serveur FTP doit être installé sur la machine du client et donc, si ce n'est pas un client particulier... ce n'est pas possible :s

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 41
    Points : 17
    Points
    17
    Par défaut
    Par client, vous entendez bien le site sur lequel j'ai un compte me donnant accès aux fichiers xml ?

    Si c'est le cas, qu'est-ce qui empêche le fait qu'un serveur ftp soit en place sur leur serveur ?

    Merci.

  7. #7
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 835
    Points
    2 835
    Par défaut
    Citation Envoyé par Kaory Voir le message
    Par client, vous entendez bien le site sur lequel j'ai un compte me donnant accès aux fichiers xml ?

    Si c'est le cas, qu'est-ce qui empêche le fait qu'un serveur ftp soit en place sur leur serveur ?

    Merci.
    hmm tous les hébergeurs sur internet ont déjà un serveur FTP ou SFTP donc ici n'est pas le problème... quand je voulais dire "client" c'était plutot la notion d'un visiteur du site...

    Si le fichier que vous devez récupérer se trouve sur un serveur distant (hébergé sur internet en gros) alors oui, il vous suffit de demander un accès FTP au fichier pour le récupérer

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 41
    Points : 17
    Points
    17
    Par défaut
    Parfait. J'espère l'avoir ^^.

    Une fois que ce sera le cas, pourriez vous me préciser ce qui est à mettre en place pour que mon serveur récupère automatiquement ces fichiers de leur serveur via cet accès ftp ?

    A défaut auriez-vous un bon tutoriel à me conseiller ?
    Je vais bien sûr chercher de mon côté aussi.

    Je vous remercie ^^.

  9. #9
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 835
    Points
    2 835
    Par défaut
    Et bien, un bon exemple se trouve dans le Manuel PHP : ftp_fget()

    Pour ce qui est de télécharger régulièrement une mise à jour du fichier, il faudrait voir du côté des crons... je ne suis pas spécialiste là-dedans :s

  10. #10
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Points : 2 273
    Points
    2 273
    Par défaut
    Citation Envoyé par Kaory Voir le message
    Bonjour à tous,
    Je peux récupérer le lien activant le téléchargement, fonctionnel même si je ne suis pas loguée.
    Que veux-tu dire par là ? Si le fichier est public tu n'auras pas besoin de passer en ftp.
    Vive les roues en pierre

  11. #11
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 835
    Points
    2 835
    Par défaut
    Citation Envoyé par Djakisback Voir le message
    Que veux-tu dire par là ? Si le fichier est public tu n'auras pas besoin de passer en ftp.
    rhoo oui... j'avais pas vu ça, j'suis décidément trop fatigué aujourd'hui

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 41
    Points : 17
    Points
    17
    Par défaut
    Citation Envoyé par Djakisback Voir le message
    Que veux-tu dire par là ? Si le fichier est public tu n'auras pas besoin de passer en ftp.
    Ce que je veux dire, c'est que le lien fourni ouvre directement la fenêtre de téléchargement du navigateur, que je sois connectée ou non au site. Me reste plus qu'à cliquer sur ok.

    Mon objectif aurait été d'avoir un script qui exécute ce lien sur le serveur et faire en sorte que le téléchargement démarre automatiquement sans "ok" à cliquer (Safari le fait par exemple : clic sur le lien suivi du téléchargement direct)
    Est-ce possible ?

    Pour ce qui est des tâches cron, j'en ai déjà fait ça devrait aller de ce côté là. Et merci pour l'exemple ^^.

    Merci pour votre aide.

  13. #13
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 835
    Points
    2 835
    Par défaut
    Citation Envoyé par Kaory Voir le message
    Mon objectif aurait été d'avoir un script qui exécute ce lien sur le serveur et faire en sorte que le téléchargement démarre automatiquement sans "ok" à cliquer (Safari le fait par exemple : clic sur le lien suivi du téléchargement direct)
    Est-ce possible ?
    arf j'avais mal compris depuis le début alors en fait, ceci est une option des browsers et ne dépend pas du code

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 41
    Points : 17
    Points
    17
    Par défaut
    Donc dans ce cas je n'ai pas d'autres solutions à part les 2 suivantes :

    - un accés ftp pour le récupérer directement
    - demander à ce que leur script dépose directement l'xml généré sur mon serveur

    C'est bien cela ?

    Désolée pour mon manque de clarté au départ. Merci quand même pour toute cette aide.

  15. #15
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 835
    Points
    2 835
    Par défaut
    haa ça dépend... si c'est pour le déposer sur un serveur, on peut appeler le fichier directement à partir du serveur et faire un file_get_contents() pour en récupérer son contenu

  16. #16
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 41
    Points : 17
    Points
    17
    Par défaut
    file_gets_content ne semble pas fonctionner.

    En fait, c'est pour récupérer un fichier généré à la volée apparemment.

    Au lieu que s'ouvre une boîte de téléchargement, j'aimerai qu'il soit déposé directement sur le serveur.

    Je ne pensais pas que ce serait si dur
    Merci pour votre patience

  17. #17
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Points : 2 273
    Points
    2 273
    Par défaut
    Oui c'est sans doute que ton serveur est en safe_mode, tu as quoi comme message d'erreur ? (vérifie dans ta config que allow_url_fopen est à 1)

    Donc dans ce cas je n'ai pas d'autres solutions à part les 2 suivantes :

    - un accés ftp pour le récupérer directement
    - demander à ce que leur script dépose directement l'xml généré sur mon serveur

    C'est bien cela ?
    Il doit te rester une 3e solution qui est de créer une requête HTTP GET pour récupérer le fichier (ça doit être HTTP GET FILE ou un truc du style). Tu peux jeter un coup d'oeil du côté de Curl, il doit y avoir des exemples. Dommage, file_get_content() ou fopen() aurait été plus simple.
    Vive les roues en pierre

  18. #18
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 41
    Points : 17
    Points
    17
    Par défaut
    Ah en fait si ca me renvoie quelque chose ^^ (premier appel fait à partir de mon serveur local : je n'avais pas d'erreur mais pas de retour non plus ).

    Bah en c'est un fichier zippé qui est envoyé donc du coup le contenu imprimé est un vrai charabia ^^. Il y a un moyen de reprendre cette chaîne de caractères vers un fichier de type .gz ?

    Pour le safe_mode, il faut le désactiver sur le serveur expéditeur ou destinataire ?

    Je jette un oeil sur les autres fonctions proposées.
    Merci pour tout.

  19. #19
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Points : 2 273
    Points
    2 273
    Par défaut
    Sur le destinataire, si c'est du gz je crois qu'il faut passer en binaire, dans ce cas tu dois pouvoir utiliser directement file_put_contents() mais je n'ai jamais essayé. Ca donnerait un truc du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    file_put_contents($fichierAEcrire, $urlALire, FILE_BINARY);

    Il y a aussi ceci http://fr.php.net/manual/fr/function...ext-create.php qui semble permettre d'envoyer une requête HTTP mais idem, jamais testé.
    Vive les roues en pierre

  20. #20
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 41
    Points : 17
    Points
    17
    Par défaut
    Eurêka !!!

    En partant de la fonction file_get_contents(), j'y suis arrivée petit à petit.
    Voici le code final :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    <?php
     
    echo "Récupération du fichier xml généré à la volée, compressé<br/>";
    $content = file_get_contents('VOTRE_URL');
     
    echo "Sauvegarde dans un fichier local<br/>";
    //file_put_contents('./NOM_FICHIER_COMPRESSE_AVEC_EXTENSION', $content, FILE_APPEND | LOCK_EX); // à utiliser plutôt que la ligne suivante si on ne veut pas supprimer le contenu précédent du fichier compressé
    file_put_contents('./NOM_FICHIER_COMPRESSE_AVEC_EXTENSION', $content);
     
    echo "Décompression du fichier récupéré<br/>";
    //$path = './';
    $file = 'NOM_FICHIER_COMPRESSE_AVEC_EXTENSION';
     
    // récupération de l'extension
    $path_parts = pathinfo($file);
    $ext = $path_parts[extension];
    echo $ext.'<br/>';
     
    // décompression en fonction du type de fichier
    if($ext == 'gz') {
     
        function ob_file_callback($buffer) // permet la redirection de la sortie standard vers un fichier
        {
          global $ob_file;
          fwrite($ob_file,$buffer);
        }
     
        $ob_file = fopen('NOM_FICHIER_DECOMPRESSE_AVEC_EXTENSION','w'); // attention supprime le contenu précédent du fichier décompressé
     
        ob_start('ob_file_callback');
     
        readgzfile($file); //décompression et lecture du fichier zippé
     
        ob_end_flush();
     
        /*$execute = "gunzip -".$path." $file";
        `$execute`;*/
    }
     
    echo "All OK";
     
    ?>
    En capitales les champs à remplacer selon votre besoin. Mes fichiers compressés et décompressés arrivent dans le même répertoire où se trouve le fichier php contenant le script.

    Les lignes en commentaires non commentées (^^) servent si vous ne voulez pas passer par une fonction php pour décompresser le fichier. Ca ne marchait pas pour moi même si ça devrait pourtant.
    Voilà l'url expliquant le bout de code sur la décompression plus en détails, et la suite pour ceux qui souhaiteraient aller jusqu'au bout du tutoriel (en anglais).

    Et sinon n'hésitez pas à retirer les echo de "debug" bien sûr.

    Voilou. Merci à tous pour votre aide !

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Téléchargement automatique de fichier XML
    Par webshop2 dans le forum ASP
    Réponses: 0
    Dernier message: 04/09/2013, 10h19
  2. Import automatique Xml into table
    Par bill4375 dans le forum PL/SQL
    Réponses: 0
    Dernier message: 10/09/2008, 11h39
  3. Téléchargement automatique avec header()
    Par pdtor dans le forum Langage
    Réponses: 2
    Dernier message: 21/03/2007, 12h15
  4. téléchargement automatique html
    Par hhafid dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 17/07/2006, 00h22
  5. [PHP-JS] téléchargement automatique
    Par titoumimi dans le forum Langage
    Réponses: 4
    Dernier message: 17/01/2006, 17h16

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