![]() |
|
#1
|
|||
|
|||
|
J'ai créé un petit utilitaire "WFFE.exe", WaitForFileExist...
Problématique : cas réel que j’ai eu à traiter J’ai un traitement par lots (CMD) qui contient : 1) Une 1ere tache T1 2) Deux taches T2 et T3 qui prennent 7 à 8 heures chacunes ! 3) Une tache T4 a exécuter lorsque T2 ET T3 sont terminées. A] Si je fais un cmd :
B] Si je fais :
Si on fait START /WAIT on retombe ds le 1er cas, aucun intérêt. C] Euréka ! il ya WFFE Je demande aux taches T2 et T3 de créer chacune un fichier sentinelle qui signalera leur bonne fin d’exécution. Et je fait un WFFE juste avant T4
(Evidemment T2 et T3 ont la responsabilité de créer Sentinelle1 et Sentinelle2) (Evidemment il faudra au préalable vérifier que Sentinelle1 et Sentinelle2 n’existent pas, parcqu’on a utilisé le CMD le mois d’avant !! ) La séquence "If not exist FullPath\Sentinelle1.txt" a pour but de ne pas exécuter la tache si le fichier Sentinelle pré-existe. Cela peut arriver si vous avez interrompu les taches (reboot par ex). Les taches terminées ne se re-exécuteront pas. De plus l’utilisation de START permet de fixer priorié (basse,haute, iddle) ou affinité de processeur(pour utiliser Multicore). L'aide de START est suffisante : START ["titre"] [/D chemin] [/i] [/MIN] [/MAX] [/SEPARATE | /SHARED] [/LOW | /NORMAL | /HIGH | /REALTIME | /ABOVENORMAL | /BELOWNORMAL] [/AFFINITY <affinité_hexa>] [/WAIT] [/b] [commande/programme] [paramètres] NB : Si on n’a pas de MultiCore ou MultiProc : WFFE n'est d'aucun intérêt. En effet ds le cas d’un BiProc, une tache CMD unique ne peut utiliser que l’équivalent de 100% d’un seul proc (soit 50% de l’OS). Utiliser START & WFFE permet de lancer 2 taches indépendantes sur deux procs différents. Dernière modification par georges.lauret ; 21/08/2008 à 14h49 |
| Liens Sponsorisés |
|
#2
|
||||
|
||||
|
après vérification, il s'avère que sur mon Windows XP Pro SP3, le START ne soit pas le même que sous un Windows 2003 !
Bien que j'ai un Dual Core, START sous Windows XP ne me permet pas de régler l'AFFINITY (ou du moins un START /? n'affiche pas le paramètre AFFINITY ! je pense donc que ça n'existe pas)Sous mes Windows 2003 R2 par contre, AFFINITY existe... ![]() merci pour la petite appli !
__________________
Administrateur
|
|
#3
|
||||
|
||||
|
autrement tu pourrais aussi faire une appli console qui lance les traitements et qui lance T4 uniquement quand T3 et T4 ont terminé ?
|
|
#4
|
||||
|
||||
|
bah justement, mais comment tu sais que T2 et T3 ont terminé ?!
__________________
Administrateur
|
|
#5
|
||||
|
||||
|
quand tu lance un script ou une appli tu as moyen d'avoir son exit code pour savoir si le traitement a réussi ou pas, apres tu peux utiliser un event handler ou encore des threads en C#... enfin bon je connais pas trop le domaine mais je pense que c'est faisable :)
|
|
#6
|
||||
|
||||
|
c'est le principe du fichier "lock" qd tu programme en php. C'est sympa la méthode.
|
|
#7
|
|||
|
|||
|
L'avantage de WFFE par rapport à une appli console qui lance T2 et T3 c'est de ne nécessiter aucun développement supplémentaire, tout en conservant une grde flexibilité puisque c'est un script shell cmd.
J'ai préféré des fichiers sentinelle au Lock de fichier car il est plus facile de détruire un fichier que de dévérouiller un fichier en cas de pb ds les taches. |
|
#8
|
||||
|
||||
|
humm oki oki.
J'ai été confronté un jour a un gros probleme. J'avais une tache qui s'executai toutes les minutes pour traiter un gros lot de data. Un beau jour...... mon traitement a pris plus d'une minute..... et la tâche s'est relancée.... et donc a pris encore plus d'une minute et s'est encore lancée et relancée et ca a saturé le proco/ram et tout le tintouin. ca a rodé pour brulé tout ce qui restait de mon ti serveur :) du coup.... j'ai fais dans la programmation de ma tache, j'ai laché mon lock. tant que ma tache n'etait pas fini mon lock été là. et si le lock existait, et bien la tache ne pouvait plus se lancer. ca ma bien dépanné du coup :) Dernière modification par Dambi ; 21/08/2008 à 20h30 |
|
#9
|
|||
|
|||
|
J'ai pensé que certains d'entre-vous pouvaient être intéressés par le source Delphi...
J'ai rajouté en plus la gestion du WFFE /? ou /help GL |
![]() |
| Liens sociaux |
| Utilisateurs regardant la discussion actuelle : 1 (0 membre(s) et 1 invité(s)) | |
| Outils de la discussion | |
|
|