test l'état d'un fichier

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : test l'état d'un fichier

par Hywan » 11 oct. 2008, 17:54

Hey :),

Peut-être vais-je dire une bêtise, mais normalement, quand on transfert un fichier sur FTP, le fichier en question se verse (upload en anglais) dans un fichier temporaire avec un nom unique. Une fois le versement terminé, le fichier temporaire écrase le fichier de destination et le tour est joué.
C'est plutôt logique. Si on met à jour un fichier qui est sollicité, on aura des erreurs.

Tu parlais aussi de faire une comparaison sur la taille ou sur la date. Préfère largement une comparaison sur la date car sur la taille, c'est un raisonnement faux. Imagine que l'on remplace un caractère par un autre : le poids sera identique, mais pas le contenu …

par Sékiltoyai » 11 oct. 2008, 02:11

Ah, c'est plus compliqué du coup…
Tu parlais de date d'écriture, tu peux vérifier la date, et si elle est trop proche (genre 10 minutes), tu considères le fichier comme invalide.

De la même manière, est ce que tu as une idée de l'ordre de grandeur de la taille que peut prendre le fichier, ou bien est ce totalement aléatoire ? Enfin, est ce que le contenu du fichier doit avoir une forme que tu connais ?

par leumasiom » 11 oct. 2008, 00:05

Tu le traites dans un dossier séparé, et tu le déplaces dans l'arborescence ftp une fois traité ?
Le souci c'est que le fichier est généré par un tiers, sur un serveur distant...
Lui, le dépose sur son ftp une fois terminé.
Mais comment m''assurer que le fichier distant n'est pas en train d'être transférer à son emplacement? Comment être certain que le fichier que ma routine trouve est bien complet et terminé.

De la même façon qu'on peut tester is_writeable, y a-ti-il une fonction qui fasse un truc du genre :
is_being_written ou aucune activité sur ce fichier...

Il me vient une idée en écrivant : si je trouve un fichier qur le serveur distant, j'enregistre son poids, sa date de création de modification... je fais un sleep(5) et je compare les nouvelles infos avec les anciennes...
Si les infos sont les mêmes, c'est que le fichier est terminé, je peux alors télécharger le fichier sur mon serveur, le sauvegarder et le supprimer du serveur distant.

Qu'en penses-tu?

par Sékiltoyai » 09 oct. 2008, 02:32

Tu le traites dans un dossier séparé, et tu le déplaces dans l'arborescence ftp une fois traité ?

test l'état d'un fichier

par leumasiom » 09 oct. 2008, 00:04

Bonsoir à tous,

Voici ma problématique.
Un partenaire met sur un fichier à dispo sur un ftp. La mise à jour du fichier peut se faire n'importe quand, plusieurs fois par jour... Ce que je souhaite c'est archiver ces fichiers sur mon serveur pour les archiver et les exploiter.

Je réfléchis à l'écriture d'un script qui via un cronjob ira vérifier si le fichier est nouveau ou pas (en comparant la taille, les dates...). Mais j'ai un souci : je ne vois pas comment vérifier si le fichier est terminé. Je ne dois pas utiliser un fichier dont l'écriture par le serveur distant n'est pas terminé.

J'ai déjà vu un système ou on demande au partenaire de mettre un fichier marqueur d'activité. En gros si je trouve un fichier encours.txt c'est que le fichier qui m'intéresse fichier.txt est en train d'être généré et donc je ne le sauvegarderai qu'au prochain passage de routine.

Il y a certainement une solution plus simple et qui n'engage que "moi".
Quelqu'un a-t-il une idée ??

Merci d'avance.
Leumasiom