Kako ustvariti podrejene procese v Node.js

Kako Ustvariti Podrejene Procese V Node Js



Med programiranjem v ' vozlišče.js «, en sam proces ni nikoli učinkovit za obvladovanje naraščajoče delovne obremenitve aplikacije. Zato lahko pride do določenih situacij, ko mora razvijalec ustvariti nove procese, delati z dolgoročnimi nalogami in omogočiti interakcijo z operacijskim sistemom. To je mogoče doseči z ustvarjanjem podrejenih procesov za uporabo več procesov in s tem skaliranjem aplikacije Node.

Ta zapis pojasnjuje spodaj navedeno vsebino:







Kaj je otroški proces?

Podrejeni proces ustreza procesu, ustvarjenemu prek drugega procesa, tj. nadrejenega. Node.js zagotavlja ' otroški_proces ” modul, ki zagotavlja učinkovito komunikacijo med podrejenimi procesi. Poleg tega ta modul pomaga pri priklicu funkcij operacijskega sistema z izvajanjem katerega koli sistemskega ukaza znotraj podrejenega procesa.



Kako ustvariti podrejene procese v Node.js?

Otrok procesira v ' vozlišče.js ” lahko ustvarite s spodaj navedenimi pristopi:



  • spawn() ” Metoda.
  • vilice () ” Metoda.
  • exec() ” Metoda.
  • execFile() ” Metoda.

Pristop 1: Ustvarjanje podrejenih procesov v node.js prek metode »spawn()«.

' spawn() ” ustvari ukaz cmdlet v novem procesu z uporabo posredovanega ukaza cmdlet in argumentov ukazne vrstice. Primerek ChildProcess uporablja/implementira API EventEmitter, ki omogoča registracijo obdelovalcev za dogodke na podrejenih objektih. Ti dogodki vključujejo izhod, prekinitev povezave, napako, sporočilo in zapiranje.





Sintaksa

otroški_proces. drstiti se ( cmdlet [ , argumenti ] [ , opcije ] )

V tej sintaksi:



  • cmdlet: Potreben je niz, ki je cmdlet za izvedbo.
  • argumenti: Nanaša se na seznam nizovnih argumentov. Privzeta vrednost je ničelna matrika.
  • ' opcije « je lahko »lupina«, ki ima logično vrednost. Tako je, da če je ' prav «, se ukaz cmdlet izvede znotraj lupine. Privzeta vrednost je ' lažno «, kar pomeni, da ni lupine. Privzeto, ' spawn() ” ne ustvari/generira ukazne lupine za zagon cmdleta, zato je ključnega pomena, da ga posredujete kot “možnost” med dostopanjem do podrejenega procesa.

Povratna vrednost: Ta metoda pridobi predmet ChildProcess.

Sledi predstavitev ustvarjanja podrejenega procesa:

konst { drstiti se } = zahtevati ( 'child_process' ) ;

konst otrok = drstiti se ( 'ti' , [ 'D: \S ETUPS' ] , { lupina : prav } ) ;

otrok. stdout . na ( 'podatki' , ( podatke ) => {

konzola. dnevnik ( `stdout : $ { podatke } ` ) ;

} ) ;

otrok. stderr . na ( 'podatki' , ( podatke ) => {

konzola. napaka ( `stderr : $ { podatke } ` ) ;

} ) ;

otrok. na ( 'blizu' , ( Koda ) => {

konzola. dnevnik ( `podrejeni proces je zapustil kodo $ { Koda } ` ) ;

} ) ;

V tem bloku kode:

  • Najprej vključite » otroški_proces ” modul za ustvarjanje podrejenega procesa.
  • Po tem ustvarite podrejeni proces za prikaz vsebine na določeni poti, tj. D:\NASTAVITVE ”.
  • Nazadnje, ' blizu ” se prikliče, ko se zapusti celoten podrejeni proces in se sporočilo o izhodu prikaže na konzoli.

Izhod

Tukaj izvedite naslednji cmdlet, da zaženete kodo in prikažete vsebino na ciljni poti:

vozlišče temp. js

Pristop 2: Ustvarjanje podrejenih procesov v node.js z uporabo metode »fork()«.

Ta metoda je povezana z ' spawn() , kjer se lahko komunikacija med podrejenimi in nadrejenimi procesi izvaja prek pošlji() ” metoda.

' vilice () ” metoda ločuje zapletene računske naloge od zanke dogodkov (glavna). Ta metoda se lahko uporablja za dostop do več podrejenih procesov, vendar lahko vpliva na splošno zmogljivost, saj ima vsak proces svoj pomnilnik.

Sintaksa

otroški_proces. vilice ( mdpath [ , argumenti ] [ , opcije ] )

Glede na to sintakso:

  • mdpath ” prevzame niz, ki predstavlja modul za izvedbo v podrejenem elementu.
  • args ” se nanaša na seznam argumentov niza.
  • opcije ” je lahko “execPath”, “env”, “CWD”, “detached” in “execArgv”.

Povratna vrednost: Ta metoda pridobi primerek ChildProcess.

Koda (nadrejeni proces)

Zdaj pojdite skozi spodnji blok kode, ki omogoča komunikacijo med nadrejenimi in podrejenimi procesi s pomočjo » pošlji() ” metoda:

konst cp = zahtevati ( 'child_process' ) ;

pusti otroka = cp. vilice ( __dirname + '/fork2.js' ) ;

otrok. na ( 'sporočilo' , funkcija ( x ) {

konzola. dnevnik ( 'Nadrejeni proces je dobil:' , x ) ;

} ) ;

otrok. poslati ( { zdravo : 'iz nadrejenega procesa' } ) ;

otrok. na ( 'blizu' , ( Koda ) => {

konzola. dnevnik ( `podrejeni proces je zapustil kodo $ { Koda } ` ) ;

} ) ;

V tej kodi:

  • Podobno vključite » otroški_proces ” modul za ustvarjanje podrejenega procesa.
  • Zdaj določite pot podrejenega procesa prek » vilice () ” metoda.
  • Nazadnje prikažite sporočilo, ki predstavlja nadrejeni proces prek » pošlji() ” in prikaže morebitne napake, ki se pojavljajo.

Koda (podrejeni proces)

Naslednja kodna datoteka, tj. fork2.js « predstavlja podrejeni proces, ki prav tako pošlje sporočilo z uporabo » pošlji() ” na naslednji način:

postopek. na ( 'sporočilo' , funkcija ( m ) {

konzola. dnevnik ( 'Podrejeni proces je dobil:' , m ) ;

} ) ;

postopek. poslati ( { zdravo : 'iz podrejenega procesa' } ) ;

Izhod

Zdaj zaženite spodnji cmdlet za izvedbo kode:

vozlišče forkchild. js

Iz tega izhoda je potrjeno, da se komunikacija med procesom med staršem in otrokom izvaja ustrezno.

Pristop 3: Ustvarjanje podrejenih procesov v node.js z uporabo metode »exec()«.

' exec() ” metoda najprej ustvari lupino in nato zažene cmdlet. Ta metoda bo uporabljena za pridobitev vseh imenikov.

Sintaksa

otroški_proces. izv ( cmdlet [ , opcije ] [ , poklicati nazaj ] )

V podani sintaksi:

  • cmdlet ” sprejme niz, ki predstavlja ukaz za izvedbo z argumenti, ločenimi s presledki.
  • ' opcije « vključujejo »cwd«, »encoding«, »shell« itd.
  • ' poklicati nazaj ” funkcija se prikliče, ko se proces/operacija konča.

Povratna vrednost

Ta metoda pridobi primerek ChildProcess.

Zdaj pa nadaljujte s kodo, ki navaja število imenikov:

konst { izv } = zahtevati ( 'child_process' ) ;
izv ( 'dir | najdi /c /v ''' , ( napaka, stdout, stderr ) => {
če ( napaka ) {
konzola. napaka ( `exec napaka : $ { napaka } ` ) ;
vrnitev ;
}
konzola. dnevnik ( `stdout : številka imenikov -> $ { stdout } ` ) ;
če ( stderr != '' )
konzola. napaka ( `stderr : $ { stderr } ` ) ;
} ) ;

V ta delček kode vključite » otroški_proces ” modul za ustvarjanje/ustvarjanje podrejenih procesov. Nato se spopadite z izjemami/napakami, ki se pojavljajo, in prikažite skupno število imenikov v trenutnem delovnem imeniku.

Izhod

Za zagon kode izvedite naslednjo kodo:

vozlišče execchild. js

V tem izhodu je mogoče implicirati, da so prikazani vsi imeniki v trenutnem delovnem imeniku.

Pristop 4: Ustvarjanje podrejenih procesov v node.js z uporabo metode execFile().

V ' execFile() ', se ciljna izvedljiva datoteka sproži neposredno v obliki novega procesa, zato je bolj učinkovita kot ' exec() ” metoda. Ta metoda ustvari ustvarjeno ' execchild.js ” v obliki novega procesa.

Sintaksa

otroški_proces. execFile ( Ime datoteke [ , argumenti ] [ , opcije ] [ , poklicati nazaj ] )

V podani sintaksi:

  • Ime datoteke ” sprejme niz, ki predstavlja ime ali pot datoteke za izvedbo.
  • args ” ustreza seznamu nizovnih argumentov.
  • ' opcije « vključujejo »cwd«, »encoding«, »shell« itd.
  • ' poklicati nazaj ” funkcija se prikliče, ko se postopek konča. Argumenti funkcije so lahko napaka, stdout itd.

Povratna vrednost

Ta metoda prav tako pridobi primerek ChildProcess.

Zdaj pa razmislite o naslednji kodi, ki ustvari ciljno izvršljivo datoteko kot nov proces:

konst { execFile } = zahtevati ( 'child_process' ) ;
konst x = execFile ( 'vozlišče' , [ 'execchild.js' ] ,
( napaka, stdout, stderr ) => {
če ( napaka ) {
metati napaka ;
}
konzola. dnevnik ( stdout ) ;
} ) ;

Na podlagi teh vrstic kode uporabite naslednje korake:

  • Ponovite obravnavani postopek za vključitev » otroški_proces ” modul.
  • V naslednjem koraku uporabite » execFile() ” metoda, ki sproži določeno izvršljivo datoteko (o kateri smo razpravljali v prejšnjem pristopu) kot nov proces, s čimer navede skupne imenike v delovnem imeniku.

Izhod

Za zagon kode izvedite spodnji cmdlet:

izvršilna datoteka vozlišča. js

V tem rezultatu je mogoče preveriti, ali je podana izvedljiva datoteka ustvarjena in je prikazano število imenikov.

Zaključek

Podrejene procese v Node.js lahko ustvarite prek » spawn() ' metoda, ' vilice () ' metoda, ' exec() « ali » execFile() ” metoda. Ti pristopi ustvarijo podrejeni proces, omogočijo komunikacijo med nadrejenim in podrejenim procesom ali navedejo imenike v trenutnem delovnem imeniku (neposredno ali prek ustvarjanja ciljne izvršljive datoteke).