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

API, COM et SDKs Delphi Discussion :

FTP récupération de fichiers+thread


Sujet :

API, COM et SDKs Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 593
    Billets dans le blog
    65
    Par défaut FTP récupération de fichiers+thread
    Bonjour,

    jusqu'à présent je récupérai au maximum deux fichiers donc je ne m'étais pas posé le problème.
    J'ai dans l'idée de remplir une liste contenant des images sur un serveur FTP

    Nom : Capture.PNG
Affichages : 169
Taille : 127,3 Ko

    et là je me pose la question sur la manière de procéder au sein d'un thread faut-il :
    créer le composant IdFtp au sein du thread ?
    ou utiliser un idFtp créé à l'extérieur ?

    faut-il fermer la connexion après chaque chargement ou pas ?

    Dans le cas d'un chargement (GET) suivi d'une sauvegarde (Put) d'un fichier modifié (dans ma liste, les photos non conforme) que faire ?

    Je demande cela car ce que je fais (idftp extérieur au thread, pas de fermeture) à pour l'instant tendance à bloquer sans que je puisse mettre le doigt dessus, alors que si je fais des Connec|GET|Disconnect il ne semble pas y avoir de blocage.

    Idem il m'arrive d'avoir des images mal chargées (phénomène aléatoire)
    Nom : Capture_1.PNG
Affichages : 148
Taille : 131,5 Ko

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 086
    Par défaut
    Pour un composant TWebImage, cela contenait un composant TIdHTTP crée dans le Thread, c'est un one-shot
    En fait, l'upload utilisait un TIdFTP mais le serveur exposait les images pour un accès HTTP, d'ailleurs l'emplacement réel FTP était résolu différemment en HTTP, cela utilisait le code de la référence, genre http://server/images/XKYGH1456.jpg donnait un emplacement ftp://server/imageroot/X/K/Y/G/H/XKYGH1456.jpg
    avec des options
    http://server/images/HD/XKYGH1456.jpg -> ftp://server/imageroot/X/K/Y/G/H/XKYGH1456.HD.jpg
    http://server/images/thumb/XKYGH1456.jpg -> ftp://server/imageroot/X/K/Y/G/H/XKYGH1456.thumb.jpg
    ...
    Evidemment, dans la liste cela affiche thumb, sur la fiche produit le fichier par défaut, au clic droit une version grande résolution et au clic gauche une version ultra haute résolution.

    Si tu utilises un composant créé hors du Thread, c'est possible mais faudra gérer un jeton d'utilisation donc probablement aucun intérêt en terme de performance, tu peux prévoir un pool de composant utilisé par un pool de thread pour répartir la charge sans non plus explosé le nombre de thread sur une application mobile.

    sans le jeton d'utilisation sur un composant hors thread, tu risques de lancer des opérations concurrentielles, va savoir ce que tu vas récupérer dans la Socket
    J'ai toujours utilisé des sockets uniquement un thread à la fois (du moins la lecture, cependant, j'ai déjà fait lecture et écriture en concurrentiel, l'un n'impact pas l'autre, mais tu ne peux pas lire dans deux threads simultanément.


    Ah oui, vérifie aussi que ton serveur FTP n'ait pas une règle sur les fichiers, j'ai connu un serveur qui même dans les JPG remplaçait les retours charriots Windows CR+LF en retour chariot Linux
    Cela donnait un peu ton bug visuel mais c'était systématique sur une image donnée corrompue définitivement.
    Le script coupable a été corrigé pour ne plus altérer les images
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    un composant créé dans chaque Thread, on ne mélange pas les choses
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  4. #4
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 086
    Par défaut
    D'ailleurs, on avait déjà parlé d'une chose similaire dans un sujet sur les threads anonymes, on avait évoqué le TImageWeb avec un TTask.Run pour lancer le Download et TThread.Synchronize pour charger l'image à l'écran
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

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

Discussions similaires

  1. [XL-2007] Récupération de fichier sur un ftp en VBA
    Par tom.math dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 31/03/2017, 15h16
  2. [FTP] Récupération de fichier sur un serveur distant
    Par valouche dans le forum Langage
    Réponses: 15
    Dernier message: 06/03/2008, 10h30
  3. [FTP] Récupération fichier en ligne de commande
    Par Zytop dans le forum Internet
    Réponses: 13
    Dernier message: 21/08/2007, 16h20
  4. [FTP] Récupération d'un fichier dans une variable
    Par leeloo1902 dans le forum Langage
    Réponses: 3
    Dernier message: 05/06/2007, 20h31
  5. [FTP] Récupération taille fichier sur ftp
    Par Kerod dans le forum Langage
    Réponses: 4
    Dernier message: 18/04/2006, 03h18

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