Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1496 connectés 

  FORUM HardWare.fr
  Programmation
  Perl

  [Fork] Gestion des childs - Besoin d'aides :)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Fork] Gestion des childs - Besoin d'aides :)

n°255666
djtoz
Posté le 27-11-2002 à 22:39:40  profilanswer
 

j ai code un ti demon qui fais des requetes snmp sur une liste d'hosts
 
marche tres bien mais le truc c k il ne traite qu'un host a la fois
j aurai voulu l ameliorer en faisant des fork pour lance plusieurs requete en parallele.
 
en faite g ma liste d host ds un array
 
un truc du style:
 
while () {
    foreach (@liste) {
       if ($pid = fork) {
       wait;
       sleep 60;
       }
       defined($pid) || die "fork impossible\n";
       ..
       le fiston fais ses requetes snmp..
       ..
       exit;
       }
    }
 
maintenant vu que ca doit boucler ttes les 60s, comment je peut faire pour eviter par exemple que 2 requetes se fasse sur le meme host ?
 
un autre truc aussi
la actuellement en fait je vais creer autant de process fils que d hosts ds la liste.
comment faire pour par exemple les faire de 5 en 5
style il prend les 5 premiers les tests, ensuites les 5 suivant...etc
 
merci d'avance pour votre aide ;)


Message édité par djtoz le 30-11-2002 à 16:37:23
mood
Publicité
Posté le 27-11-2002 à 22:39:40  profilanswer
 

n°257809
djtoz
Posté le 30-11-2002 à 16:31:39  profilanswer
 

bon j'ai avance :)
j'explique plus en detail ou j'en suis et ce que je voudrai bien faire :p
 
donc actuellement je gere le nombre de childs simultanes que je lance pour faire les requetes snmp
 
voila ma methode:
 
les hosts a interoger sont ds le tableau @hosts.
$$conf{childs} contient le nbr de childs a lance en parallele.
$$conf{interval} contient le nbr de seconde a attendre avant de relance un check de tous les hosts.
 
my $i = 0;
while () {
    foreach $ligne (0..$#{@$hosts}) {
        $i++;
        if ($i == $$conf{childs}) {
            map {waitpid($_, 0)} (@pid);
            undef @pid;
            $i = 1;
            }
 
         ### le papa ###
   
        if ($pid = fork) {
            push @pid, $pid;
            }
 
        ### le fiston ###
 
        else {
            defined($pid) || die "fork a foire: $!\n";
            ...
            requetes snmp...
            ...
            exit;
            }
        }
    map {waitpid($_, 0)} (@pid);
    sleep "$$conf{interval}";
    }
 
bon la actuellement ca fonctionne tres bien.
seulement c pas tres optimise.
 
c'est a dire qu'au depart je prend $$conf{childs} hosts parmis ma liste d'hosts, puis j'attends qu'il meurt tous pour a nouveau en prendre $$conf{childs} suivant ds la liste.
ainsi de suite...
 
ce que je voudrais faire c'est que par exemple si je fixe $$conf{childs} a 5 childs, j'en prends 5 au debut mais des que y'en a 1 qui est termine, au lieu d'attendre que tous meurt pour continuer ds la liste d'hosts, je voudrai en demarre 1 nouveau.
de sorte que j'ai en permanence 5 childs lance.
 
je sais pas si je suis assez clair :)
mais si vous voulez plus d'explication, n'hesitez pas.
 
merci d'avance pour votre aide


Message édité par djtoz le 30-11-2002 à 16:35:57

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Perl

  [Fork] Gestion des childs - Besoin d'aides :)

 

Sujets relatifs
Gestion des threads en PerlBesoin d'aide aupres des utilisateurs d'Advanced Poll (déséspéré!)
[Excel] besoin d'aide pour formule de rechercheBesoin de conseils pr un script de news
[JS] Gestion des cookieshelp me !! besoin d'un coup de main (pas de catégorie)
help me !! besoin d'un coup de main (pas de catégorie)[ASP] besoin d'aide pour affichage
Besoin d'aide pour un .batBesoin AIDE pour programme sur EEPROM !!! MERCI !!!!
Plus de sujets relatifs à : [Fork] Gestion des childs - Besoin d'aides :)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR