рд╡рд┐рд╡рд░рдг
FCGI :: ProcManager рдХреЗ рд▓рд┐рдП рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рд╡рд┐рд╕реНрддрд╛рд░, рдЬрд┐рд╕рд╕реЗ рдЖрдк fcgi рдкреНрд░реЛрд╕реЗрд╕ рдореИрдиреЗрдЬрд░ рдХреЛ рдПрдХреНрд╕реЗрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рд╕реЙрдХреЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреНрд░рдмрдВрдзрдХ рдХреЗ рд╕рд╛рде рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рд╕рдВрдкреНрд░реЗрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдиреБрдХрд╕рд╛рди
FCGI :: ProcManager рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдЕрдиреБрд░реЛрдз рд╣реИрдВрдбрд▓рд░ рдХреЛ рд╕реНрдкреЙрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡рд░реНрддрдорд╛рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдПрдХ рдкреНрд░рдмрдВрдзрдХ рд╣реИред рд╢реБрд░реВ рд╕реЗ, рдпрд╣ рд╣реИрдВрдбрд▓рд░ (n_processes pieces) рдХреЛ рдЬрдиреНрдо рджреЗрддрд╛ рд╣реИ, рдлрд┐рд░ рдпрд╣ рд▓рдбрд╝рд╛рдИ рдореЗрдВ рдореГрддрдХреЛрдВ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рдХреЗ рдЙрдирдХреА рд╕рдВрдЦреНрдпрд╛ рдмрдирд╛рдП рд░рдЦрддрд╛ рд╣реИред рдЗрди рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдпрд╣
рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдБ рд╕рдорд╕реНрдпрд╛ рдирд┐рд╣рд┐рдд рд╣реИред рдереНрд░реЗрдбреНрд╕ рд╢реБрд░реВ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдкреНрд░рдмрдВрдзрдХ, рдкреНрд░рддреАрдХреНрд╖рд╛ рдХреЙрд▓ рдХрд░рдХреЗ, рдЕрд╡рд░реБрджреНрдз рд╣реИред рдЖрдк рдЗрд╕реЗ рдХреЗрд╡рд▓
рд╕рдВрдХреЗрддреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣реА рдкрд╣реБрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВред рд╕рд┐рдЧреНрдирд▓ рд╣реИрдВрдбрд▓рд░ рдореЗрдВ рдХреЛрдб рдХреЛ рдмреБрджреНрдзрд┐рдорд╛рдиреА рд╕реЗ рдФрд░ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдЧреЛрд╡рдиреЛрдХреЙрдб рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕рд▓рд┐рдП рдПрдХ рдФрд░ рд╕рдВрдЪрд╛рд░ рдЪреИрдирд▓ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред
рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЪрд▓рд┐рдП рдореИрдиреЗрдЬрд░ рдХреЛ рд╕реЙрдХреЗрдЯ рд╕реБрдирдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдкреНрд░рдмрдВрдзрдХ рдХреЛ рдмреНрд▓реЙрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред Pm_wait рдлрд╝рдВрдХреНрд╢рди FCGI рдореЗрдВ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ :: ProcManager:
sub pm_wait { my ($this) = self_or_default(@_);
рд╣рдореЗрдВ
рд╡реЗрдЯрдкрд┐рдб рдХреЗ рд╕рд╛рде рдкреНрд░рддреАрдХреНрд╖рд╛ рдХреЙрд▓ рдХреЛ рдмрджрд▓рдиреЗ рдФрд░ рдЕрдкрдирд╛ рдХреЛрдб рд╡рд╣рд╛рдВ рдкреЗрд╕реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдкреНрд░рдмрдВрдзрдХ рдХреЛ рджреВрд╕рд░реЗ рдкреЛрд░реНрдЯ рдХреЛ рдЦреЛрд▓рдирд╛ рдФрд░ рд╕реБрдирдирд╛ рд╣реЛрдЧрд╛, рдФрд░ рд╕реНрдЯреИрдВрдбрдмрд╛рдп рдореЛрдб рдореЗрдВ рд╕рдордп-рд╕рдордп рдкрд░ рд╡рдВрд╢рдЬреЛрдВ рдХреЛ рджреЗрдЦрдирд╛ рдФрд░ рдкреЛрд░реНрдЯ рдХреЛ рд╕реБрдирдирд╛ рд╣реЛрдЧрд╛ред рд╣рдо pm_wait рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЕрдкрдирд╛ рд╕рдВрд╕реНрдХрд░рдг рд▓рд┐рдЦреЗрдВрдЧреЗ рдФрд░ FCGI :: ProcManager рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдПрдХ рд╣реА рдирд╛рдо рдХреЗ рдлрд╝рдВрдХреНрд╢рди рдХреЛ
рдмрдВрджрд░ рдкреИрдЪ рдХреЗ рд╕рд╛рде рдмрджрд▓ рджреЗрдВрдЧреЗред рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рдЬрд╡рд╛рдм рдореЗрдВ, рд╣рдо рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╕рднреА рд╡рдВрд╢рдЬ рдХреЛ рдЕрдзрд┐рднрд╛рд░рд┐рдд рдХрд░реЗрдВрдЧреЗред
use FCGI; use FCGI::ProcManager; use IO::Select; use IO::Socket; use POSIX ":sys_wait_h";
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдХреЛрдб рд╣реИ:
use IO::Socket; use feature ':5.14'; use strict; my $socket = new IO::Socket::INET(Proto => "tcp", Type => SOCK_STREAM, PeerPort => 9034, PeerAddr => "127.0.0.1" ) or die "Can't connect: $!";
рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдо рдлрд╛рд╕реНрдЯреЗрдЧреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкреНрд░рдмрдВрдзрдХ рдХреЛ рд╕рдВрджреЗрд╢ (рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рд╕реНрд╡рдпрдВ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ) рднреЗрдЬрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИрдВред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╡рд░реНрддрдорд╛рди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдХреНрд╡реЗрд░реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд░рд┐рд▓реЛрдб рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА (рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдЯрд┐рдкреНрдкрдгреА рдХреА рдЧрдИ)ред рдЖрдк рд╣реИрдВрдбрд▓рд░ рдХреА рд╕рдВрдЦреНрдпрд╛ рдмрдврд╝рд╛ / рдШрдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВ
$pm->{n_processes} = 10; $pm->sig_manager('HUP');
рдареАрдХ рд╣реИ, рдРрд╕реА рдЫреЛрдЯреА рдЪреАрдЬреЗрдВ рдЬреИрд╕реЗ рдкреНрд░реЛрдлрд╛рдЗрд▓ рдХреЛ рдЪрд╛рд▓реВ / рдмрдВрдж рдХрд░рдирд╛ред рдмреЗрд╢рдХ, рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЕрдиреНрдп рддрд░реАрдХреЛрдВ рд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЗрд╕реЗ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рддрд░реАрдХрд╛ рд╣реИ