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

EDI, CMS, Outils, Scripts et API PHP Discussion :

Transférer plusieurs fichiers CSV d'un serveur B (FTP) vers un serveur A (sur lequel se trouve le script PHP)


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2023
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2023
    Messages : 37
    Par défaut Transférer plusieurs fichiers CSV d'un serveur B (FTP) vers un serveur A (sur lequel se trouve le script PHP)
    Bonjour à tous,

    J'espère que vous allez bien ?

    Je suis actuellement en train de créer un script en PHP qui sera exécuté via une tâche cron sur un serveur A et qui permettra entre autre d'aller récupérer sur un serveur B (FTP) plusieurs fichiers CSV.

    Voici mon code actuel :
    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
    <?php
    	ini_set('display_errors', '1');
     
    	$ftp_server = "Hôte";
    	$ftp_user_name = "UserName";
    	$ftp_user_pass = "UserPass";
    	$lang = "fr";
    	$ftp = ftp_connect($ftp_server);
    	// Identification avec un nom d'utilisateur et un mot de passe
    	$login_result = ftp_login($ftp, $ftp_user_name, $ftp_user_pass);
    	//Upload des fichiers
    	if(ftp_get($ftp, __DIR__ ."/Fichiers_csv/categ/category_2403_".$lang.".csv", "/files/categories/csv/prestashop/category_2403_".$lang.".csv", FTP_ASCII)) {
    		if(!ftp_get($ftp, __DIR__ ."/Fichiers_csv/products/product_2403_".$lang.".csv", "/files/products/csv/prestashop/presta_product_2403_".$lang.".csv", FTP_ASCII)) {
    			echo "Il y a eu un problème lors de l'envoie du fichier <strong>".__DIR__ ."/Fichiers_csv/products/product_2403_".$lang.".csv</strong>\r\n";
    			exit;
    		} else {
    			echo "Aucun problème lors de l'envoie du fichier <strong>".__DIR__ ."/Fichiers_csv/products/combination_2403_".$lang.".csv</strong>\r\n";
    		}
     
    		if(ftp_get($ftp, __DIR__ ."/Fichiers_csv/products/combination_2403_".$lang.".csv", "/files/combinations/csv/prestashop/presta_combination_2403_".$lang.".csv", FTP_ASCII)) {
    			echo "Aucun problème lors de l'envoie du fichier <strong>".__DIR__ ."/Fichiers_csv/products/combination_2403_".$lang.".csv</strong>\r\n";
    		} else {
    			echo "Il y a eu un problème lors de l'envoie du fichier <strong>".__DIR__ ."/Fichiers_csv/products/combination_2403_".$lang.".csv</strong>\r\n";
    			exit;
    		}
    	} else {
    		echo "Il y a eu un problème lors de l'envoie du fichier <strong>".__DIR__ ."/Fichiers_csv/categ/category_2403_".$lang.".csv</strong>\r\n";
    		exit;
    	}
     
    	// Fermeture de la connexion FTP
    	ftp_close($ftp);
    ?>
    Le problème c'est qu'en général j'obtiens le message suivant :
    Warning: ftp_get(): Failed to establish connection. in /...
    Parfois le premier fichier se transfert sur le serveur A et l'erreur intervient pour le fichier suivant et parfois aucun fichier n'est transféré.

    Avez-vous une solution pour résoudre ce problème s'il vous plaît ?

    Merci par avance.

  2. #2
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2023
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2023
    Messages : 37
    Par défaut
    Bonjour tout le monde,

    Pour information je viens de rajouter ftp_pasv après ftp_login comme suit :
    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
    <?php
    	ini_set('display_errors', '1');
     
    	$ftp_server = "Hôte";
    	$ftp_user_name = "UserName";
    	$ftp_user_pass = "UserPass";
    	$lang = "fr";
    	$ftp = ftp_connect($ftp_server);
    	// Identification avec un nom d'utilisateur et un mot de passe
    	$login_result = ftp_login($ftp, $ftp_user_name, $ftp_user_pass);
            ftp_pasv($ftp, true);
    	//Upload des fichiers
    	if(ftp_get($ftp, __DIR__ ."/Fichiers_csv/categ/category_2403_".$lang.".csv", "/files/categories/csv/prestashop/category_2403_".$lang.".csv", FTP_ASCII)) {
    		if(!ftp_get($ftp, __DIR__ ."/Fichiers_csv/products/product_2403_".$lang.".csv", "/files/products/csv/prestashop/presta_product_2403_".$lang.".csv", FTP_ASCII)) {
    			echo "Il y a eu un problème lors de l'envoie du fichier <strong>".__DIR__ ."/Fichiers_csv/products/product_2403_".$lang.".csv</strong>\r\n";
    			exit;
    		} else {
    			echo "Aucun problème lors de l'envoie du fichier <strong>".__DIR__ ."/Fichiers_csv/products/combination_2403_".$lang.".csv</strong>\r\n";
    		}
     
    		if(ftp_get($ftp, __DIR__ ."/Fichiers_csv/products/combination_2403_".$lang.".csv", "/files/combinations/csv/prestashop/presta_combination_2403_".$lang.".csv", FTP_ASCII)) {
    			echo "Aucun problème lors de l'envoie du fichier <strong>".__DIR__ ."/Fichiers_csv/products/combination_2403_".$lang.".csv</strong>\r\n";
    		} else {
    			echo "Il y a eu un problème lors de l'envoie du fichier <strong>".__DIR__ ."/Fichiers_csv/products/combination_2403_".$lang.".csv</strong>\r\n";
    			exit;
    		}
    	} else {
    		echo "Il y a eu un problème lors de l'envoie du fichier <strong>".__DIR__ ."/Fichiers_csv/categ/category_2403_".$lang.".csv</strong>\r\n";
    		exit;
    	}
     
    	// Fermeture de la connexion FTP
    	ftp_close($ftp);
    ?>
    Voici le message d'erreur retournée à présent :
    Warning: ftp_get(): php_connect_nonb() failed: Operation now in progress (115) in ....
    Warning: ftp_get(): Switching to ASCII mode. in ....
    Merci par avance pour votre aide.

  3. #3
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 644
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 644
    Par défaut
    je n'ai pas trop d'idée si vous n'avez pas plus d'informations sur l'erreur.
    avez-vous la possibilité de voir les journaux d'erreur du serveur ?

  4. #4
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2023
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2023
    Messages : 37
    Par défaut
    Bonjour Mathieu,

    Merci pour votre retour.

    De quel serveur souhaitez-vous les journaux d'erreur ?

    Pour information, j'ai également testé de procéder de la manière suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php
        ini_set('display_errors', '1');
     
        $ftp_server = "Hôte";
        $ftp_user_name = "UserName";
        $ftp_user_pass = "UserPass";
        $lang = "fr";
    $url = $ftp_server . '/files/categories/csv/prestashop/category_2403_'.$lang.'.csv';
    file_put_contents(__DIR__ ."/Fichiers_csv/categ/category_2403_".$lang.".csv", fopen('ftp://'.$ftp_user_name.':'.$ftp_user_pass.'@'.$ftp_server.'/files/categories/csv/prestashop/category_2403_fr.csv', 'r'));
        file_put_contents(__DIR__ ."/Fichiers_csv/products/combination_2403_".$lang.".csv", fopen('ftp://'.$ftp_user_name.':'.$ftp_user_pass.'@'.$ftp_server.'/files/combinations/csv/prestashop/presta_combination_2403_fr.csv', 'r'));
        file_put_contents(__DIR__ ."/Fichiers_csv/products/product_2403".$lang.".csv", fopen('ftp://'.$ftp_user_name.':'.$ftp_user_pass.'@'.$ftp_server.'/files/products/csv/prestashop/presta_product_2403_fr.csv', 'r'));
        file_put_contents(__DIR__ ."/Fichiers_csv/marques/manufacturers_2403_".$lang.".csv", fopen('ftp://'.$ftp_user_name.':'.$ftp_user_pass.'@'.$ftp_server.'/files/manufacturer/csv/prestashop/manufacturer_2403_fr.csv', 'r'));
      ?>
    Voici le message d'erreur que j'obtiens avec cette méthode :
    Warning: fopen(ftp://.../combinations/csv/prestasho..._2403_fr.csv): failed to open stream: Failed to set up data channel: Connection refused in ...

    Warning: fopen(ftp://.../products/csv/prestashop/pr..._2403_fr.csv): failed to open stream: Failed to set up data channel: Connection refused in ...

    Warning: fopen(ftp://.../manufacturer/csv/prestasho..._2403_fr.csv): failed to open stream: FTP server reports 550 Could not get file size. in ...
    Merci par avance pour votre retour.

  5. #5
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 644
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 644
    Par défaut
    je pensais au serveur ftp.
    si votre code fonctionne parfois c'est qu'il y a un souci coté serveur qui ne dépend peut-être pas de votre code.

  6. #6
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2023
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2023
    Messages : 37
    Par défaut
    Bonjour Mathieu,

    Malheureusement j'ai accès qu'au FTP donc il m'est impossible de vous fournir les journaux d'erreur de ce serveur.
    Je pense en effet que le problème vient du serveur FTP.
    Je vais essayer de me renseigner de ce côté-là en espérant trouver la solution et je vous tiens informés de l'avancement.

    Merci pour votre aide!

  7. #7
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2023
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2023
    Messages : 37
    Par défaut
    Bonjour à tous et à Mathieu,

    Je viens vous faire un retour de l'avancement (ou pas) de ce problème :
    Après avoir discuté avec le propriétaire du FTP qui m'a confirmé que le serveur bloquerait mon IP qu'en cas de nombreuses tentatives de connexion en très peu de temps, si le script essaie simplement de télécharger les fichiers, vous ne devriez pas avoir de problème et que de leur côté la connexion ne semble pas se fermer.

    Savez-vous comment je peux savoir si c'est mon serveur qui bloc la connexion ?

    Merci par avance pour votre aide !

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 09/09/2013, 14h23
  2. Transfert de fichier via FTP
    Par missd12 dans le forum Développement de jobs
    Réponses: 4
    Dernier message: 24/05/2013, 10h19
  3. importation de fichiers texte de plusieurs repertoire via ftp
    Par AaGayia dans le forum Général Python
    Réponses: 4
    Dernier message: 20/07/2011, 10h00
  4. Réponses: 0
    Dernier message: 15/03/2009, 22h07
  5. []transfert de fichiers via FTP
    Par ista9im dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 01/10/2005, 23h02

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