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

Modules Perl Discussion :

TimeOut FTP


Sujet :

Modules Perl

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Décembre 2005
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 4
    Points : 1
    Points
    1
    Par défaut TimeOut FTP
    Bonjour,

    Ma config:
    Perl 5.8.0
    Windows 2000 5.0 SP4

    Le besoin:
    J'ai un applicatif qui contacte une série de serveurs (sous système Twinserver de Prologue) par ftp, pour envoyer et/ou recevoir des fichiers.

    Extrait du module:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    use strict;
    use Win32::Internet;
     
    my($adresseIP, $login, $pass)=@_;
     
    my $connection = new Win32::Internet();
    my $session;
    $connection->FTP($session, $adresseIP, $login, $pass);
     
    # put et get variables
     
    $session->Close();
    Le problème:
    Pour certains destinataires (chez qui il s'avère après coup que le disque dur est défaillant), la connexion ftp met 1 heure pile à rendre la main (ex de 10h28 à 11h28), d'autres fois, c'est le put ou le get qui met une heure (parfois 2, ex: de 10h28 à 12h28). Le problème est que la connexion qui attend, bloque toutes les autres, et ma télétransmission multiple déborde de ses horaires.
    J'ai regardé le timeout à la connexion par défaut:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my $timeout=$session->ConnectTimeout();
    et il n'est que de 39904. Si c'est 39904 millisecondes, ça ne correspond pas à mon heure d'attente.

    La question:
    Est-il possible de modifier cette heure d'attente, pour la ramener à des délais plus raisonnables ?

  2. #2
    vic
    vic est déconnecté
    Membre confirmé

    Profil pro
    Inscrit en
    Août 2002
    Messages
    431
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 431
    Points : 498
    Points
    498
    Par défaut
    D'après la doc le timeout par défaut est infini. C'est autre chose qui provoque l'erreur au bout d'une heure. Tu peux régler un timeout plus court en faisant $session->ConnectTimeout(10000);.

    Dans tous les cas s'il y a beaucoup de clients l'idéal serait de paralléliser les traitements (par exemple 10 taches simultanées).

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Décembre 2005
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    En effet, je lance en parallèle plusieurs process, qui lancent eux-mêmes plusieurs threads, donc il n'y a pas d'attente lors de l'exécution des connexions.
    Là où ça bouchonne, c'est lors du traitement de fin qui centralise les résultats après avoir attendu que toutes les taches aient rendu la main.

    Je vais essayer le timeout à 10000 comme tu conseilles, bien que je ne comprenne pas pourquoi il indique 39904 alors qu'il est en valeur infinie.

  4. #4
    Nouveau Candidat au Club
    Inscrit en
    Décembre 2005
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 4
    Points : 1
    Points
    1
    Par défaut Time-out ftp
    J'en sais plus sur les circonstances de mon blocage: cela arrive par exemple quand je fais un get, et que le serveur distant est coupé (coupure ligne, ou reboot).
    A ce moment-là, la session ftp de mon serveur appelant est figée pendant 1 heure.
    J'ai essayé de faire varier les valeurs suivantes, de 0 à 100 000, mais elles ne semblent avoir aucun effet:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      $session->ConnectTimeout(10000);
      $session->ControlSendTimeout(10000);
      $session->ControlReceiveTimeout(10000);
    Quelqu'un a-t-il une idée sur l'origine de cette attente d'une heure ?

  5. #5
    Nouveau Candidat au Club
    Inscrit en
    Décembre 2005
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 4
    Points : 1
    Points
    1
    Par défaut [Résolu]TimeOut FTP
    J'ai trouvé ce qui n'allait pas:

    Ce n'est pas la méthode:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $session->ControlReceiveTimeout(10000)
    qu'il faut positionner, mais celle-ci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $session->DataReceiveTimeout(10000)
    Et là, ça marche !

Discussions similaires

  1. Comment intercepter le timeout d'une connexion ftp en bash
    Par Tilwan dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 12/04/2010, 11h30
  2. [AC-2007] Comment augementer timeout lors d'un transfert de fichier sur ftp
    Par pasnaz dans le forum VBA Access
    Réponses: 3
    Dernier message: 15/10/2009, 22h14
  3. Timeout Ftp ?
    Par patpat1 dans le forum Applications et environnements graphiques
    Réponses: 1
    Dernier message: 22/08/2007, 13h34
  4. FTP (TIdFTP) : problème de TimeOut
    Par michelci dans le forum Web & réseau
    Réponses: 7
    Dernier message: 26/10/2005, 17h24
  5. Ftp login & Timeout
    Par MSP dans le forum Modules
    Réponses: 6
    Dernier message: 29/08/2003, 12h55

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