|
FORUMS PROFESSIONNELS WINDEV, WEBDEV et WINDEV Mobile |
| | | | | |
Renommer x fichiers ou rien (sorte de commit rollback) |
Débuté par John Do, 13 déc. 2018 11:32 - 6 réponses |
| |
| | | |
|
| |
Posté le 13 décembre 2018 - 11:32 |
Bonjour,
J'ai plusieurs fichiers à renommer de façon régulière et il ne faut pas qu'une partie des fichiers soit renommés et pas les autres (coupure réseau, etc)
Comment puis-je faire pour avoir un code équivalent au commit / rollback pour les bases de données ? |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 1 623 messages Popularité : +100 (114 votes) |
|
Posté le 13 décembre 2018 - 12:37 |
Hello,
Dans ce cas, je te conseille de dresser une table historique des tes renommages STRenommage est une structure sAncienNomFichier est une chaine sNouveauNomFichier est une chaine FIN
taHistoriqueRenommage est un tableau de STRenommage
Dans la boucle fichier par fichier tu execute ton code et a chaque fichier renommer tu ajoute une occurrence a ton tableau En cas d'erreur tu renvoi faux Et tu parcours le tableau pour remettre les fichiers dans leur nom d'origine
Je ne vois que ça |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 96 messages Popularité : +18 (20 votes) |
|
Posté le 13 décembre 2018 - 14:13 |
Bonjour,
de la manière où tu présentes la chose, ça me parait très compliqué.
Comme c'est présenté, j'émets l'hypothèse que tu renommes tes fichiers à travers le réseau, ce qui signifie que tu n'as plus accès à tes fichiers en cas de coupure réseau. C'est donc difficile de les remettre d'aplomb si tu n'as plus accès à l'emplacement.
Voici une solution que j'imagine pour ton besoin.
- 1. Regarder le répertoire initial (nommé A) - 2. Créer un répertoire temporaire (nommé sur le poste destination (certainement à travers le réseau) - 3. Copier chaque fichier à renommer dans ce répertoire et lui donner le bon nom - 4. Si la copie se fait jusqu'au bout, donner un autre nom au répertoire initial (nommé C) - 5. Puis renommer le répertoire temporaire ( avec le nom du répertoire initial (A) - 6. Supprimer le répertoire initial (C)
Si tu as une coupure durant les étapes 1 à 4, c'est la partie la plus longue de ton traitement, mais tes fichiers n'ont pas été renommés Si tu as une coupure durant l'étape 5, tu es dans la galère mais c'est aussi la partie du traitement la plus rapidement Si tu as une coupure durant l'étape 6, ce n'est pas trop grave mais il faudra faire le ménage dès que possible.
L'équivalent du commit / rollback dont tu parles, c'est possible tout simplement parce que l'application qui gère la base de données est sur le serveur qui contient la base de données. Mais si l'application n'avait plus accès à la base de données pendant le commit ou le rollback, la base serait dans un état instable jusqu'à ce qu'elle soit accessible (mais dans ce cas, on ne s'en rend pas compte vu qu'on ne peut plus accéder aux données et dès que l'accès se refait, l'application répare les transactions échouées).
J'espère que cette piste te donnera des idées.
-- Johjo aka Jonathan Laurent
Codez mieux ! Codez plus vite !
Mon blog sur WinDev : http://www.ytreza.org Me contacter sur slack (wx-community) : https://frama.link/BoBD0SY0 Faîtes moi un ping : http://www.ytreza.org/fr/services/ping-sur-forum |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 81 messages Popularité : +2 (4 votes) |
|
Posté le 13 décembre 2018 - 17:20 |
Johjo : c'est aussi la solution que nous utilisons.
+1 |
| |
| |
| | | |
|
| | |
| |
Posté le 13 décembre 2018 - 18:04 |
Bonsoir, Un traitement tacheparallèle irait. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 81 messages Popularité : +2 (4 votes) |
|
Posté le 14 décembre 2018 - 09:03 |
Ralph a écrit :
Bonsoir, Un traitement tacheparallèle irait.
Bonjour, je suis curieux... en quoi le fait de passer le ttraitement de copie des fichiers reglerait son probleme ?
pour resumer, il a 100 fichiers à renommer
il ne veut pas que les 50 premiers fichiers soient renommés, qu'à ce moment là plantage reseau et hop tout s'arrete. bilan la moitié des fichiers uniquement renommés
j'arrive pas à comprendre comment une tache parallele reglerait ce souci, peux tu m'eclairer, car là ça m'interesse. |
| |
| |
| | | |
|
| | |
| |
Posté le 20 décembre 2018 - 15:21 |
Merci pour vos avis, pas simple car mon dossier est alimenté en fichiers par un flux externe. Je ne peux pas le supprimer et des fichiers peuvent se rajouter.
Je pense quand même passer par un dossier temporaire avec un nom qui me permet d'avoir des infos sur l'étape en cours en cas de coupure, ça me permettra de gérer la reprise. |
| |
| |
| | | |
|
| | | | |
| | |
| | |
| |
|
|
|