рд╢реБрдн рджреЛрдкрд╣рд░
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ FastCGI рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╕реНрд╡рдпрдВ рдФрд░ рдЗрд╕рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди 1996 рдореЗрдВ рд╡рд╛рдкрд╕ рджрд┐рдЦрд╛рдИ рджрд┐рдП, рдЗрд╕ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рд▓рд┐рдП рдмрд╕ рдХреЛрдИ рд╡рд┐рд╕реНрддреГрдд рдореИрдиреБрдЕрд▓ рдирд╣реАрдВ рд╣реИрдВ - рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рд╕рдВрджрд░реНрдн рдирд╣реАрдВ рд▓рд┐рдЦрд╛ рд╣реИред рд▓реЗрдХрд┐рди рджреЛ рд╕рд╛рд▓ рдкрд╣рд▓реЗ, рдЬрдм рдореИрдВрдиреЗ рдЗрд╕ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдерд╛, рддреЛ "рдореИрдВ рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ, рдпрд╣ рд╕рдордЭ рдирд╣реАрдВ рдкрд╛рдпрд╛" рдЬреИрд╕реЗ рд╡рд╛рдХреНрдпрд╛рдВрд╢ рдЕрдХреНрд╕рд░ рдкрд╛рдП рдЬрд╛рддреЗ рдереЗред рдпрд╣ рдХрдореА рд╣реИ рдХрд┐ рдореИрдВ рд╕рд╣реА рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ - рдПрдХ рдмрд╣реБ-рдереНрд░реЗрдбреЗрдб рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рдЗрд╕ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рдЙрдкрдпреЛрдЧ рдкрд░ рдПрдХ рд╡рд┐рд╕реНрддреГрдд рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛ рд▓рд┐рдЦрдирд╛ рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдЪреБрдирдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рдлрд╛рд░рд┐рд╢реЗрдВ рдЬреЛ рд╣рд░ рдХреЛрдИ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдЕрдЪреНрдЫреА рдЦрдмрд░ рдпрд╣ рд╣реИ рдХрд┐ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдбреЗрдЯрд╛ рдХреЛ FastCGI рдФрд░ CGI рдореЗрдВ рдПрдиреНрдХреЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдХреЗрд╡рд▓ рд╡рд╣реА рд╣реИ, рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рд╡реЗ рдкреНрд░реЗрд╖рд┐рдд рдкрд░рд┐рд╡рд░реНрддрди рд╣реИрдВ: рдпрджрд┐ CGI рдкреНрд░реЛрдЧреНрд░рд╛рдо рдорд╛рдирдХ I / O рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рддреЛ FastCGI рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╕реЙрдХреЗрдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдЖрдкрдХреЛ рдмрд╕ FastCGI рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдХрдИ рдХрд╛рд░реНрдпреЛрдВ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рд╕реАрдЬреАрдЖрдИ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рдЕрдиреБрднрд╡ рдХрд╛ рд▓рд╛рдн рдЙрдард╛рдПрдВ, рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдЙрдирдХреЗ рдХрдИ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВред
рддреЛ, рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рд╣рдо рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ:
- FastCGI рдХреНрдпрд╛ рд╣реИ рдФрд░ рдпрд╣ CGI рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╕реЗ рдХреИрд╕реЗ рднрд┐рдиреНрди рд╣реИ
- рд╡реЗрдм рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрдИ рднрд╛рд╖рд╛рдПрдБ рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг рдореБрдЭреЗ FastCGI рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ
- FastCGI рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рдХреНрдпрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореМрдЬреВрдж рд╣реИрдВ
- рд╕реЙрдХреЗрдЯреНрд╕ рдХреНрдпрд╛ рд╣реИрдВ
- FastCGI рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рд╡рд┐рд╡рд░рдг
- рдорд▓реНрдЯреА-рдереНрд░реЗрдбреЗрдб FastCGI рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд╛ рдПрдХ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг
- рд╕рд░рд▓ рдирдЧрдиреЗрдХреНрд╕ рд╡рд┐рдиреНрдпрд╛рд╕ рдЙрджрд╛рд╣рд░рдг
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рд╢реБрд░реБрдЖрддреА рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рдкреБрд░рд╛рдиреЗ рдЕрдиреБрднрд╡реА рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рд░реВрдк рд╕реЗ рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдп рд▓реЗрдЦ рд▓рд┐рдЦрдирд╛ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рд╕рднреА рдмрд┐рдВрджреБрдУрдВ рдХреЛ рдпрдерд╛рд╕рдВрднрд╡ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдХрд╡рд░ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реВрдВрдЧрд╛, рдФрд░ рдЖрдк рдмрд╕ рдЙрди рд╡рд░реНрдЧреЛрдВ рдХреЛ рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЗ рд▓рд┐рдП рджрд┐рд▓рдЪрд╕реНрдк рдирд╣реАрдВ рд╣реИрдВред
FastCGI рдХреНрдпрд╛ рд╣реИ?
рдЖрдк FastCGI рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ
рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рдкрд░ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдпрд╣ рдПрдХ CGI рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╣реИ рдЬреЛ рд▓реВрдк рдореЗрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реИред рдпрджрд┐ рдкреНрд░рддреНрдпреЗрдХ рдирдП рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рдирд┐рдпрдорд┐рдд CGI рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ FastCGI рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рдПрдХ рдХрддрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рд╣реЛрддреЗ рд╣реИрдВред рдЕрдм рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ: 300-500 рдПрдХ рд╕рд╛рде рдЕрдиреБрд░реЛрдз рдЖрдкрдХреЗ 4-8-рдХреЛрд░ рд╕рд░реНрд╡рд░ рдкрд░ рдЖрдПред рдЗрдиреНрд╣реАрдВ 300-500 рдмрд╛рд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рдпрдорд┐рдд рд╕реАрдЬреАрдЖрдИ рдХрд╛рд░реНрдпрдХреНрд░рдо рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдмрд╣реБрдд рд╕рд╛рд░реА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ рд╣реИрдВ - рдЖрдкрдХрд╛ рд╕рд░реНрд╡рд░ рд╢рд╛рд░реАрд░рд┐рдХ рд░реВрдк рд╕реЗ рдЙрди рд╕рднреА рдХреЛ рдПрдХ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рддреЛ, рдЖрдк рдкреНрд░реЛрд╕реЗрд╕рд░ рд╕рдордп рдХреЗ рдЙрдирдХреЗ рдХреНрд╡рд╛рдВрдЯрдо рдХреЗ рд▓рд┐рдП рдЗрдВрддрдЬрд╛рд░ рдХрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рдПрдХ рдХрддрд╛рд░ рдорд┐рд▓ рдЬрд╛рдПрдЧрд╛ред рдЖрдорддреМрд░ рдкрд░, рдЕрдиреБрд╕реВрдЪрдХ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рд╡рд┐рддрд░рд┐рдд рдХрд░реЗрдЧрд╛ (рдЬреИрд╕рд╛ рдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕рднреА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдПрдВ рд╕рдорд╛рди рд╣реИрдВ), рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП 300-500 "рд▓рдЧрднрдЧ рддреИрдпрд╛рд░" рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдПрдВ рд╣реЛрдВрдЧреАред рдХрд┐рд╕реА рднреА рддрд░рд╣ рдмрд╣реБрдд рдЖрд╢рд╛рд╡рд╛рджреА рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИ, рд╣реИ рдирд╛? рдПрдХ FastCGI рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ, рдЗрди рд╕рднреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдПрдХ рд╕рд░рд▓ рдЕрдиреБрд░реЛрдз рдХрддрд╛рд░ рджреНрд╡рд╛рд░рд╛ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЕрд░реНрдерд╛рдд, рдЕрдиреБрд░реЛрдз рдорд▓реНрдЯреАрдкреНрд▓реЗрдХреНрд╕рд┐рдВрдЧ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)ред
рдЬрдм рдкрд╣рд▓реЗ рд╕реЗ рд╣реА PHP, Ruby, Python, Perl, рдЗрддреНрдпрд╛рджрд┐ рд╣реЛрдВ, рддреЛ рдореБрдЭреЗ FastCGI рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ?
рд╢рд╛рдпрдж рдореБрдЦреНрдп рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рд╕рдВрдХрд▓рд┐рдд рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рддреЗрдЬреА рд╕реЗ рдЪрд▓реЗрдЧрд╛ред PHP рдХреЗ рд▓рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, APC, eAccelerator, XCache рд╕рд╣рд┐рдд рддреНрд╡рд░рдХ рдХреА рдПрдХ рдкреВрд░реА рдкрдВрдХреНрддрд┐ рд╣реИ, рдЬреЛ рдХреЛрдб рд╡реНрдпрд╛рдЦреНрдпрд╛ рд╕рдордп рдХреЛ рдХрдо рдХрд░рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди C / C ++ рдХреЗ рд▓рд┐рдП, рдпрд╣ рд╕рдм рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред
рджреВрд╕рд░реА рдмрд╛рдд рдЬреЛ рдЖрдкрдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдиреА рдЪрд╛рд╣рд┐рдП рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рдбрд╛рдпрдирд╛рдорд┐рдХ рдЯрд╛рдЗрдкрд┐рдВрдЧ рдФрд░ рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╣рдХрд░реНрддрд╛ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╕рдВрд╕рд╛рдзрди рдЬреБрдЯрд╛ рд▓реЗрддреЗ рд╣реИрдВред рдХрднреА-рдХрднреА рдмрд╣реБрддред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
PHP рдореЗрдВ рдкреВрд░реНрдгрд╛рдВрдХ рд╕рд░рдгрд┐рдпрд╛рдБ рдбреЗрдЯрд╛ рдХреА рд╕рдорд╛рди рдорд╛рддреНрд░рд╛ рдХреЗ рд▓рд┐рдП C / C ++ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ
рд▓рдЧрднрдЧ 18 рдЧреБрдирд╛ рдЕрдзрд┐рдХ рдореЗрдореЛрд░реА (рд╡рд┐рднрд┐рдиреНрди PHP рд╕рдВрдХрд▓рди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ 35 рдЧреБрдирд╛
рддрдХ) рд▓реЗрддреА рд╣реИрдВ , рдЗрд╕рд▓рд┐рдП рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдмрдбрд╝реЗ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдУрд╡рд░рд╣реЗрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪреЗрдВред
рддреАрд╕рд░рд╛, рдПрдХ FastCGI рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╡рд┐рднрд┐рдиреНрди рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ PHP рд╣рд░ рдмрд╛рд░ рд╕реНрдХреНрд░реИрдЪ рд╕реЗ рдЕрдиреБрд░реЛрдз рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддрд╛ рд╣реИ, рддреЛ FastCGI рдкреНрд░реЛрдЧреНрд░рд╛рдо рдкрд╣рд▓реЗ рдЕрдиреБрд░реЛрдз рдЖрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рднреА рдХрдИ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрд┐рдд рдХрд░реЗрдВ, рдЕрдХреНрд╕рд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛ рд▓реЛрдб рдХрд░реЗрдВ рдЖрджрд┐ред - рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдпрд╣ рд╕рдм рд╕рдордЧреНрд░ рдкреНрд░рдгрд╛рд▓реА рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдмрдврд╝рд╛ рд╕рдХрддрд╛ рд╣реИред
рдЪреМрдерд╛ рд╕реНрдХреЗрд▓реЗрдмрд┐рд▓рд┐рдЯреА рд╣реИред рдпрджрд┐ mod_php рдорд╛рдирддрд╛ рд╣реИ рдХрд┐ Apache рд╡реЗрдм рд╕рд░реНрд╡рд░ рдФрд░ PHP рдПрдХ рд╣реА рдорд╢реАрди рдкрд░ рд╣реИрдВ, рддреЛ FastCGI рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЯреАрд╕реАрдкреА рдЬреЗрдм рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдЖрдкрдХреЗ рдкрд╛рд╕ рдХрдИ рдорд╢реАрдиреЛрдВ рдХрд╛ рдПрдХ рдкреВрд░рд╛ рд╕рдореВрд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЗ рд╕рд╛рде рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рд╕рдВрдЪрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕реА рд╕рдордп, FastCGI рднреА рдпреВрдирд┐рдХреНрд╕ рдбреЛрдореЗрди рд╕реЙрдХреЗрдЯреНрд╕ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдиреЗ рдкрд░ рдЙрд╕реА рдорд╢реАрди рдкрд░ FastCGI рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдФрд░ рд╡реЗрдм рд╕рд░реНрд╡рд░ рдХреЛ рдХреБрд╢рд▓рддрд╛рдкреВрд░реНрд╡рдХ рдЪрд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдкрд╛рдВрдЪрд╡реАрдВ рд╕реБрд░рдХреНрд╖рд╛ рд╣реИред рдЖрдк рдЗрд╕реЗ рдорд╛рдирддреЗ рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде Apache рдЖрдкрдХреЛ рджреБрдирд┐рдпрд╛ рдореЗрдВ рд╕рдм рдХреБрдЫ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдХреЛрдИ рд╣рдорд▓рд╛рд╡рд░ "рдирд┐рд░реНрджреЛрд╖ рдЫрд╡рд┐" рдХреА рдЖрдбрд╝ рдореЗрдВ рдХрд┐рд╕реА рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рд╢реЛрд╖рдг.php.jpg рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╕рд╛рдЗрдЯ рдкрд░ рдЕрдкрд▓реЛрдб рдХрд░рддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рдЙрд╕реЗ рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЦреЛрд▓рддрд╛ рд╣реИ, рддреЛ Apache рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг php рдХреЛрдб рдХреЛ "рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ" рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдЧрд╛ред рд╢рд╛рдпрдж рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдП рдЧрдП рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдирд╛рдореЛрдВ рд╕реЗ рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рдЦрддрд░рдирд╛рдХ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛ рдирд┐рдХрд╛рд▓рдиреЗ рдпрд╛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХрдорд╛рддреНрд░ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╕рдорд╛рдзрд╛рди рд╣реИ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ php, php4, php5, phtml, рдЖрджрд┐ред рдЗрд╕ рддрд░рд╣ рдХреА рддрдХрдиреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдбреНрд░реБрдкрд▓ рдореЗрдВ - рд╕рднреА "рдЕрддрд┐рд░рд┐рдХреНрдд" рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдореЗрдВ рдПрдХ рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╢реЛрд╖рдгред Php_.jpg рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рд╕рдЪ рд╣реИ, рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╕рд┐рд╕реНрдЯрдо рдкреНрд░рд╢рд╛рд╕рдХ рдХрд┐рд╕реА рднреА рдЕрддрд┐рд░рд┐рдХреНрдд рдлрд╝рд╛рдЗрд▓ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛ php рд╣реИрдВрдбрд▓рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреБрдЫ .html рдЕрдЪрд╛рдирдХ рдПрдХ рднрдпрд╛рдирдХ рд╕реБрд░рдХреНрд╖рд╛ рдЫреЗрдж рдореЗрдВ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред рдХреЗрд╡рд▓ рдЗрд╕рд▓рд┐рдП рдХрд┐ рдпрд╣ рдмрджрд╕реВрд░рдд рд▓рдЧ рд░рд╣рд╛ рдерд╛, рдпрд╣ SEO рдХреЗ рд▓рд┐рдП рдмреБрд░рд╛ рдерд╛ред рдЧреНрд░рд╛рд╣рдХ рдХреЛ рдкрд╕рдВрдж рдирд╣реАрдВ рдЖрдпрд╛ред рддреЛ, рд╕реБрд░рдХреНрд╖рд╛ рдХреА рджреГрд╖реНрдЯрд┐ рд╕реЗ рд╣рдореЗрдВ FastCGI рдХреНрдпрд╛ рджреЗрддрд╛ рд╣реИ? рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрджрд┐ рдЖрдк рдЕрдкрд╛рдЪреЗ рдХреЗ рдмрдЬрд╛рдп рдирдЧреНрдиреЗрдХреНрд╕ рд╡реЗрдм рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдмрд╕ рд╕реНрдереИрддрд┐рдХ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рджреВрд░ рдХрд░ рджреЗрдЧрд╛ред рдмрд┐рдВрджреБред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рд╢реЛрд╖рдХ.php.jpg рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рд░реНрд╡рд░ рдХреЗ рдХрд┐рд╕реА рднреА рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдмрд┐рдирд╛ "рдЬреИрд╕рд╛ рд╣реИ" рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдЪрд▓реЗрдЧрд╛ред рджреВрд╕рд░реЗ, FastCGI рдкреНрд░реЛрдЧреНрд░рд╛рдо рдФрд░ рд╡реЗрдм рд╕рд░реНрд╡рд░ рд╡рд┐рднрд┐рдиреНрди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рд╕реЗ рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЙрдирдХреЗ рдкрд╛рд╕ рдлрд╝рд╛рдЗрд▓реЛрдВ рдФрд░ рдлрд╝реЛрд▓реНрдбрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЕрдзрд┐рдХрд╛рд░ рд╣реЛрдВрдЧреЗред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд╡реЗрдм рд╕рд░реНрд╡рд░ рдХреЗрд╡рд▓ рдбрд╛рдЙрдирд▓реЛрдб рдХреА рдЧрдИ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдкрдврд╝ рд╕рдХрддрд╛ рд╣реИ - рдпрд╣ рд╕реНрдереИрддрд┐рдХ рдбреЗрдЯрд╛ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рдФрд░ рдПрдХ FastCGI рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗрд╡рд▓ рдбрд╛рдЙрдирд▓реЛрдб рдХреА рдЧрдИ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╝реЛрд▓реНрдбрд░ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдкрдврд╝ рдФрд░ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИ - рдпрд╣ рдирдИ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдФрд░ рдкреБрд░рд╛рдиреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рд▓реЗрдХрд┐рди рдбрд╛рдЙрдирд▓реЛрдб рдХреА рдЧрдИ рдлрд╝рд╛рдЗрд▓реЛрдВ рддрдХ рд╕реАрдзреЗ рдкрд╣реБрдВрдЪреЗрдВ рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдпрд╣ рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рддреАрд╕рд░рд╛, рдПрдХ FastCGI рдкреНрд░реЛрдЧреНрд░рд╛рдо рдПрдХ рд╡реЗрдм рд╕рд░реНрд╡рд░ рдХреЗ рдЪреЗрд░реЛрдЯ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдПрдХ рдЪреЗрд░реЛрдЯ рдореЗрдВ рдЪрд▓ рд╕рдХрддрд╛ рд╣реИред рдЕрдкрдиреЗ рдЖрдк рд╕реЗ, рдЪреЗрд░реЛрдЯ (рд░реВрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рдмрджрд▓рдирд╛) рдЖрдкрдХреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреЛ рдЧрдВрднреАрд░ рд░реВрдк рд╕реЗ рд╕реАрдорд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд, рд╕рд┐рд╕реНрдЯрдо рдХреА рд╕рдордЧреНрд░ рд╕реБрд░рдХреНрд╖рд╛ рдХреЛ рдмрдврд╝рд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗрд╡рд▓ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рдмрд╛рд╣рд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪ рд╕рдХрддрд╛ рд╣реИред
FastCGI рд╕рдорд░реНрдерди рд╡рд╛рд▓рд╛ рдХреМрди рд╕рд╛ рд╡реЗрдм рд╕рд░реНрд╡рд░ рдЪреБрдирдирд╛ рдмреЗрд╣рддрд░ рд╣реИ?
рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ - рдореИрдВ
Nginx рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, FastCGI рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рдХрд╛рдлреА рдХрдо рд╕рд░реНрд╡рд░ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╡рд╛рдгрд┐рдЬреНрдпрд┐рдХ рднреА рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдХреБрдЫ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рджреЗрдВред
рдЕрдкрд╛рдЪреЗ рд╢рд╛рдпрдж рдкрд╣рд▓реА рдмрд╛рдд рд╣реИ рдЬреЛ рджрд┐рдорд╛рдЧ рдореЗрдВ рдЖрддреА рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдирдЧреНрдиреЗрдХреНрд╕ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдЙрдкрднреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 10,000 рдирд┐рд╖реНрдХреНрд░рд┐рдп HTTP рдХреАрдк-рд╕рдЬреАрд╡ рдХрдиреЗрдХреНрд╢рдиреЛрдВ рдХреЗ рд▓рд┐рдП, рдирдЧреНрдиреЗрдХреНрд╕ рд▓рдЧрднрдЧ 2.5M рдореЗрдореЛрд░реА рдХреА рдЦрдкрдд рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдХрдордЬреЛрд░ рдорд╢реАрди рдХреЗ рд▓рд┐рдП рднреА рдХрд╛рдлреА рдпрдерд╛рд░реНрдерд╡рд╛рджреА рд╣реИ, рдФрд░ рдЕрдкрд╛рдЪреЗ рдкреНрд░рддреНрдпреЗрдХ рдирдП рдХрдиреЗрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдзрд╛рдЧрд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рд╣реИ, рдЗрд╕рд▓рд┐рдП 10,000 рдзрд╛рдЧреЗ рдмрд╕ рд╢рд╛рдирджрд╛рд░ рд╣реИрдВред
рд▓рд╛рдЗрдЯрдЯреИрдк - рдЗрд╕ рд╡реЗрдм рд╕рд░реНрд╡рд░ рдХрд╛ рдореБрдЦреНрдп рджреЛрд╖ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рд╣реА рдзрд╛рдЧреЗ рдореЗрдВ рд╕рднреА рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рд╕реНрдХреЗрд▓реЗрдмрд┐рд▓рд┐рдЯреА рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ - рдЖрдк рдЖрдзреБрдирд┐рдХ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рд╕рднреА 4-8 рдХреЛрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдФрд░ рджреВрд╕рд░рд╛ - рдпрджрд┐ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рд╡реЗрдм рд╕рд░реНрд╡рд░ рдХрд╛ рдкреНрд░рд╡рд╛рд╣ рд▓рдЯрдХрд╛ рд╣реБрдЖ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рд╛рд░реНрдб рдбрд┐рд╕реНрдХ рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рд▓рдВрдмреЗ рдЗрдВрддрдЬрд╛рд░ рдХреЗ рдХрд╛рд░рдг), рддреЛ рдЖрдкрдХрд╛ рдкреВрд░рд╛ рд╕рд░реНрд╡рд░ "рд╣реИрдВрдЧ" рд╣реЛрдЧрд╛ред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдПрдХ рдзреАрдореА рдЧрддрд┐ рд╕реЗ рдЕрдиреБрд░реЛрдз рдХреЗ рдХрд╛рд░рдг рдЕрдиреНрдп рд╕рднреА рдЧреНрд░рд╛рд╣рдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдПрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджреЗрдВрдЧреЗред
рдПрдХ рдЕрдиреНрдп рдЙрдореНрдореАрджрд╡рд╛рд░
рдЪреЗрд░реЛрдХреА рд╣реИ ред рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдпрд╣ рдирдЧрдиреЗрдХреНрд╕ рдФрд░ рд▓рд╛рдЗрдЯрдЯреИрдк рд╕реЗ рддреЗрдЬ рд╣реИред
FastCGI рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреНрдпрд╛ рд╣реИрдВ?
рдлрд┐рд▓рд╣рд╛рд▓ FastCGI рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рджреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИрдВ - FastCGI рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рд░рдЪрдирд╛рдХрд╛рд░реЛрдВ рд╕реЗ
libfcgi.lib рд▓рд╛рдЗрдмреНрд░реЗрд░реА, рдФрд░
Fastcgi ++ - C ++ рдХреНрд▓рд╛рд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реАред Libfcgi 1996 рдХреЗ рдмрд╛рдж рд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рдХреА рдЧрдИ рд╣реИ рдФрд░, рдУрдкрди рдорд╛рд░реНрдХреЗрдЯ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдмрд╣реБрдд рд╕реНрдерд┐рд░ рд╣реИ, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдЕрдзрд┐рдХ рд╕рд╛рдорд╛рдиреНрдп рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдореИрдВ рдпрд╣ рдиреЛрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реА рдореЗрдВ рд▓рд┐рдЦреА рдЧрдИ рд╣реИ, рд╕реА ++ рдХреЗ рдмрд┐рд▓реНрдЯ-рдЗрди "рд░реИрдкрд░" рдХреЛ рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рдирд╣реАрдВ рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рд╕реА-рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ - рдЗрд╕рдореЗрдВ рдПрдХ рдмрджрд▓рд╛рд╡ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд▓реЛрдХрдкреНрд░рд┐рдп рд╡рд┐рддрд░рдгреЛрдВ рдореЗрдВ, рдпрд╣ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕рдВрдХреБрд▓ рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╣реИред
рд╕реЙрдХреЗрдЯреНрд╕ рдХреНрдпрд╛ рд╣реИрдВ?
рд╕реЙрдХреЗрдЯ рдХреА рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЕрд╡рдзрд╛рд░рдгрд╛
рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рд╕реЙрдХреЗрдЯ рдЗрдВрдЯрд░рдкреНрд░реЛрд╕реЗрд╕ рд╕рдВрдЪрд╛рд░ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИред
рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВ, рд╕рднреА рдЖрдзреБрдирд┐рдХ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдПрдбреНрд░реЗрд╕ рд╕реНрдкреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИред рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдХрд░реНрдиреЗрд▓ рд░реИрдо рддрдХ рд╕реАрдзреА рдкрд╣реБрдВрдЪ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ, рдФрд░ рдпрджрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдПрдХ рдЧреИрд░-рдореМрдЬреВрдж (рдЗрд╕ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ) рдореЗрдореЛрд░реА рдПрдбреНрд░реЗрд╕ рддрдХ рдкрд╣реБрдВрдЪрддрд╛ рд╣реИ, рддреЛ рдХрд░реНрдиреЗрд▓ рдПрдХ рд╡рд┐рднрд╛рдЬрди рджреЛрд╖ (рд╡рд┐рднрд╛рдЬрди рддреНрд░реБрдЯрд┐) рдХреЛ рд╡рд╛рдкрд╕ рдХрд░ рджреЗрдЧрд╛ рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдмрдВрдж рдХрд░ рджреЗрдЧрд╛ред рдпрд╣ рдЕрджреНрднреБрдд рд╣реИ - рдЕрдм рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдмрд╕ рджреВрд╕рд░реЛрдВ рдХреЛ рдиреБрдХрд╕рд╛рди рдирд╣реАрдВ рдкрд╣реБрдВрдЪрд╛ рд╕рдХрддреА рд╣реИрдВ - рд╡реЗ рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдЕрдиреНрдп рдЖрдпрд╛рдореЛрдВ рдореЗрдВ рдерд╛ред рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкрддреЗ рдХреЗ рд╕реНрдерд╛рди рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╕рд╛рдЭрд╛ рдбреЗрдЯрд╛ рдпрд╛ рдбреЗрдЯрд╛ рдПрдХреНрд╕рдЪреЗрдВрдЬ рд╕реЗ рдХреЛрдИ рдбреЗрдЯрд╛ рдПрдХреНрд╕рдЪреЗрдВрдЬ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдФрд░ рдЕрдЧрд░ рдЖрдкрдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╕реЗ рджреВрд╕рд░реЗ рдореЗрдВ рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдХреИрд╕реЗ? рджрд░рдЕрд╕рд▓, рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕реЙрдХреЗрдЯ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдП рдЧрдП рдереЗ - рджреЛ рдпрд╛ рдЕрдзрд┐рдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ (рдкрдврд╝реЗрдВ: рдкреНрд░реЛрдЧреНрд░рд╛рдо) рдПрдХ рд╣реА рд╕реЙрдХреЗрдЯ рд╕реЗ рдХрдиреЗрдХреНрдЯ рд╣реЛрддреА рд╣реИрдВ рдФрд░ рдбреЗрдЯрд╛ рдПрдХреНрд╕рдЪреЗрдВрдЬ рд╢реБрд░реВ рдХрд░рддреА рд╣реИрдВред рдпрд╣ рджреВрд╕рд░реА рджреБрдирд┐рдпрд╛ рдХреЗ рд▓рд┐рдП "рд╡рд┐рдВрдбреЛ" рдХрд╛ рдПрдХ рдкреНрд░рдХрд╛рд░ рд╣реИ - рдЗрд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЖрдк рдЕрдиреНрдп рдзрд╛рд░рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рднреЗрдЬ рд╕рдХрддреЗ рд╣реИрдВред
рдХрдиреЗрдХреНрд╢рди рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд╕реЙрдХреЗрдЯ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЯреАрд╕реАрдкреА рд╕реЙрдХреЗрдЯ рд╣реИрдВ - рд╡реЗ рдбреЗрдЯрд╛ рдХрд╛ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рдд, рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╡рд┐рднрд┐рдиреНрди рдХрдВрдкреНрдпреВрдЯрд░реЛрдВ рдкрд░ рдЪрд▓ рд╕рдХрддреЗ рд╣реИрдВред рджреВрд╕рд░рд╛ рд╕рдмрд╕реЗ рдЖрдо рд╡рд┐рдХрд▓реНрдк - рдпреВрдирд┐рдХреНрд╕ рдбреЛрдореЗрди рд╕реЙрдХреЗрдЯреНрд╕ (рдпреВрдирд┐рдХреНрд╕ рдбреЛрдореЗрди рд╕реЙрдХреЗрдЯ) - рдХреЗрд╡рд▓ рдПрдХ рд╣реА рдорд╢реАрди рдХреЗ рднреАрддрд░ рдбреЗрдЯрд╛ рдПрдХреНрд╕рдЪреЗрдВрдЬ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИрдВ рдФрд░ рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдкрде рдХреА рддрд░рд╣ рджрд┐рдЦрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрд╕рд▓реА рд╣рд╛рд░реНрдб рдбреНрд░рд╛рдЗрд╡ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рд╕рднреА рдбреЗрдЯрд╛ рдПрдХреНрд╕рдЪреЗрдВрдЬ рд░реИрдо рдореЗрдВ рд╣реЛрддреЗ рд╣реИрдВред рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд┐ рдЖрдкрдХреЛ рдиреЗрдЯрд╡рд░реНрдХ рд╕реНрдЯреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рд╡реЗ рдЯреАрд╕реАрдкреА рд╕реЙрдХреЗрдЯреНрд╕ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХреБрдЫ рддреЗрдЬрд╝реА рд╕реЗ (рд▓рдЧрднрдЧ 10%) рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд▓рд┐рдП, рдЗрд╕ рд╕реЙрдХреЗрдЯ рд╡рд┐рдХрд▓реНрдк рдХреЛ рдкрд╛рдЗрдк рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЬреАрдПрдирдпреВ / рд▓рд┐рдирдХреНрд╕ рдХреЗ рд▓рд┐рдП рд╕реЙрдХреЗрдЯ рдЙрдкрдпреЛрдЧ рдХреЗ рдЙрджрд╛рд╣рд░рдг
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдкрд╛рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдкрдиреЗ рдЕрднреА рддрдХ рд╕реЙрдХреЗрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдореИрдВ рдЖрдкрдХреЛ рд╕рд▓рд╛рд╣ рджреВрдВрдЧрд╛ рдХрд┐ рдЖрдк рдЕрдкрдиреЗ рдЖрдк рдХреЛ рдЗрд╕рдХреЗ рд╕рд╛рде рдкрд░рд┐рдЪрд┐рдд рдХрд░реЗрдВ - рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рд╡рд░реНрдгрд┐рдд рдЪреАрдЬреЛрдВ рдХреА рдЖрдкрдХреА рд╕рдордЭ рдореЗрдВ рд╕реБрдзрд╛рд░ рд╣реЛрдЧрд╛ред
Libfcgi рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ?
рдЗрд╕рд▓рд┐рдП, рд╣рдо рдПрдХ рдмрд╣реБ-рдереНрд░реЗрдбреЗрдб FastCGI рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдХреБрдЫ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
int FCGX_Init(void);
рдЪреЗрддрд╛рд╡рдиреА! рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЗрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рдХрд╛рд░реНрдпреЛрдВ рд╕реЗ рдкрд╣рд▓реЗ рдФрд░ рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ (рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░, рдХрд┐рд╕реА рднреА рдереНрд░реЗрдб рдХреЗ рд▓рд┐рдП) рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдЖрдЧреЗ рд╣рдореЗрдВ рд╕реБрдирдиреЗ рд╡рд╛рд▓рд╛ рд╕реЙрдХреЗрдЯ рдЦреЛрд▓рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ:
int FCGX_OpenSocket(const char *path, int backlog);
рдкрде рдЪрд░ рдореЗрдВ рд╕реЙрдХреЗрдЯ рдХрдиреЗрдХреНрд╢рди рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реИред рдпреВрдирд┐рдХреНрд╕ рдбреЛрдореЗрди рд╕реЙрдХреЗрдЯ рдФрд░ рдЯреАрд╕реАрдкреА рд╕реЙрдХреЗрдЯреНрд╕ рджреЛрдиреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдФрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдкрд░ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдп рдХрд░реЗрдЧреАред
рдпреВрдирд┐рдХреНрд╕ рдбреЛрдореЗрди рд╕реЙрдХреЗрдЯ рдХреЗ рд▓рд┐рдП рдХрдиреЗрдХреНрд╢рди рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЗ рдЙрджрд╛рд╣рд░рдг:
"/tmp/fastcgi/mysocket" "/tmp/fcgi_example.bare.sock"
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рд╣реИ: рдЖрдкрдХреЛ рдмрд╕ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рдкрде рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рд╕реЙрдХреЗрдЯ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╕рднреА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рддрдХ рдЗрд╕рдХреА рдкрд╣реБрдВрдЪ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдореИрдВ рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рд╕реЗ рджреЛрд╣рд░рд╛рддрд╛ рд╣реВрдВ: рдпрд╣ рд╡рд┐рдзрд┐ рдХреЗрд╡рд▓ рдПрдХ рдХрдВрдкреНрдпреВрдЯрд░ рдХреЗ рдврд╛рдВрдЪреЗ рдХреЗ рднреАрддрд░ рдХрд╛рдо рдХрд░рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЯреАрд╕реАрдкреА рд╕реЙрдХреЗрдЯреНрд╕ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХреБрдЫ рддреЗрдЬ рд╣реИред
рдЯреАрд╕реАрдкреА рд╕реЙрдХреЗрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рдХрдиреЗрдХреНрд╢рди рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЗ рдЙрджрд╛рд╣рд░рдг:
":5000" ":9000"
рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдПрдХ рдЯреАрд╕реА рд╕реЙрдХреЗрдЯ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкреЛрд░реНрдЯ (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХреНрд░рдорд╢рдГ 5000 рдпрд╛ 9000) рдкрд░ рдЦреЛрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдХрд┐рд╕реА рднреА рдЖрдИрдкреА рдкрддреЗ рд╕реЗ рдЕрдиреБрд░реЛрдз рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗред
рдЪреЗрддрд╛рд╡рдиреА! рдпрд╣ рд╡рд┐рдзрд┐ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ - рдпрджрд┐ рдЖрдкрдХрд╛ рд╕рд░реНрд╡рд░ рдЗрдВрдЯрд░рдиреЗрдЯ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реИ, рддреЛ рдЖрдкрдХрд╛ FastCGI рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд┐рд╕реА рдЕрдиреНрдп рдХрдВрдкреНрдпреВрдЯрд░ рд╕реЗ рдЕрдиреБрд░реЛрдз рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдЧрд╛ред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдХреЛрдИ рднреА рд╣рдорд▓рд╛рд╡рд░ рдЖрдкрдХреЗ рдбреЗрде рдкреИрдХреЗрдЬ рдХреЛ рдЖрдкрдХреЗ FastCGI рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рднреЗрдЬ рд╕рдХрддрд╛ рд╣реИред рдмреЗрд╢рдХ, рдЗрд╕рдореЗрдВ рдХреБрдЫ рднреА рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИ - рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдкрдХрд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рдмрд╕ рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд╕реЗрд╡рд╛ рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ (DoS attack, рдпрджрд┐ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ), рд╕рдмрд╕реЗ рдЦрд░рд╛рдм, рджреВрд░рд╕реНрде рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрди рдореЗрдВ (рдпрджрд┐ рдпрд╣ рд╕рднреА рднрд╛рдЧреНрдпрд╢рд╛рд▓реА рдирд╣реАрдВ рд╣реИ), рддреЛ рд╣рдореЗрд╢рд╛ рд╕реАрдорд┐рдд рдХрд░реЗрдВ рдлрд╝рд╛рдпрд░рд╡реЙрд▓ (рдлрд╝рд╛рдпрд░рд╡реЙрд▓) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдРрд╕реЗ рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ рддрдХ рдкрд╣реБрдВрдЪ, рдФрд░ рдПрдХреНрд╕реЗрд╕ рдХреЗрд╡рд▓ рдЙрди рдЖрдИрдкреА рдкрддреЗ рдХреЛ рджреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдП рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ FastCGI рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рд╕рдВрдЪрд╛рд▓рди рдХреЗ рджреМрд░рд╛рди рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ (рд╕рд┐рджреНрдзрд╛рдВрдд "рд╕рдм рдХреБрдЫ рдирд┐рд╖рд┐рджреНрдз рд╣реИ рдЬреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрдиреБрдордд рдирд╣реАрдВ рд╣реИ")ред
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрджрд╛рд╣рд░рдг рдХрдиреЗрдХреНрд╢рди рддрд╛рд░:
"*:5000" "*:9000"
рд╡рд┐рдзрд┐ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкрд┐рдЫрд▓реЗ рдПрдХ рдХреЗ рд╕рдорд╛рди рд╣реИ: рдХрд┐рд╕реА рднреА рдЖрдИрдкреА рдкрддреЗ рд╕реЗ рдХрдиреЗрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдПрдХ рдЯреАрд╕реАрдкреА рд╕реЙрдХреЗрдЯ рдЦреЛрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдлрд╝рд╛рдпрд░рд╡реЙрд▓ рдХреЛ рд╕рд╛рд╡рдзрд╛рдиреАрдкреВрд░реНрд╡рдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЗрд╕ рдХрдиреЗрдХреНрд╢рди рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕реЗ рдПрдХрдорд╛рддреНрд░ рдкреНрд▓рд╕ рд╡рд┐рд╢реБрджреНрдз рд░реВрдк рд╕реЗ рдкреНрд░рд╢рд╛рд╕рдирд┐рдХ рд╣реИ - рдХреЛрдИ рднреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдпрд╛ рд╕рд┐рд╕реНрдЯрдо рдПрдбрдорд┐рдирд┐рд╕реНрдЯреНрд░реЗрдЯрд░ рд░реАрдбрд┐рдВрдЧ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдордЭ рдЬрд╛рдПрдЧрд╛ рдХрд┐ рдЖрдкрдХрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд┐рд╕реА рднреА рдЖрдИрдкреА рдкрддреЗ рд╕реЗ рдХрдиреЗрдХреНрд╢рди рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП, рдЕрдиреНрдп рд╕рднреА рдЪреАрдЬреЗрдВ рд╕рдорд╛рди рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг, рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдкрд╕рдВрдж рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред
рдПрдХ рд╕реБрд░рдХреНрд╖рд┐рдд рд╡рд┐рдХрд▓реНрдк рдХрдиреЗрдХреНрд╢рди рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдЖрдИрдкреА рдкрддреЗ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реИ:
"5.5.5.5:5000" "127.0.0.1:9000"
рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЕрдиреБрд░реЛрдз рдХреЗрд╡рд▓ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЖрдИрдкреА рдкрддреЗ рд╕реЗ рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХреНрд░рдорд╢рдГ 5.5.5.5 рдпрд╛ 127.0.0.1), рдЕрдиреНрдп рд╕рднреА рдЖрдИрдкреА рдкрддреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдмрдВрджрд░рдЧрд╛рд╣ (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, 5000 рдпрд╛ 9000, рдХреНрд░рдорд╢рдГ) рдмрдВрдж рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рд╕рд┐рд╕реНрдЯрдо рдХреА рд╕рдордЧреНрд░ рд╕реБрд░рдХреНрд╖рд╛ рдХреЛ рдмрдврд╝рд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЬрдм рднреА рд╕рдВрднрд╡ рд╣реЛ рддреЛ рд╣рдореЗрд╢рд╛ рдЯреАрд╕реАрдкреА рд╕реЙрдХреЗрдЯреНрд╕ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рдЗрд╕ рдкреНрд░рд╛рд░реВрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ - рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рд╕рд┐рд╕реНрдЯрдо рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдлрд╝рд╛рдпрд░рд╡реЙрд▓ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП "рдмрд╕ рднреВрд▓ рдЬрд╛рддрд╛ рд╣реИ"? рдореИрдВ рдЖрдкрдХреЛ рджреВрд╕рд░реЗ рдЙрджрд╛рд╣рд░рдг рдкрд░ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддрд╛ рд╣реВрдВ - рдЙрд╕реА рдорд╢реАрди рдХрд╛ рдкрддрд╛ (рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ) рд╡рд╣рд╛рдВ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рдЖрдкрдХреЛ рдПрдХ рд╣реА рдорд╢реАрди рдкрд░ рдПрдХ рдЯреАрд╕реА рд╕реЙрдХреЗрдЯ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдпрджрд┐ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдЖрдк рдпреВрдирд┐рдХреНрд╕ рдбреЛрдореЗрди рд╕реЙрдХреЗрдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдЪреЗрд░реЛрдЯ рд╡реЗрдм рд╕рд░реНрд╡рд░ рдФрд░ рдЪреЗрд░реЛрдЯ FastCGI рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╡рд┐рднрд┐рдиреНрди рдлрд╝реЛрд▓реНрдбрд░реЛрдВ рдореЗрдВ рд╣реИрдВ рдФрд░ рдЖрдо рдлрд╝рд╛рдЗрд▓ рдкрде рдирд╣реАрдВ рд╣реИрдВ )ред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЖрдк рджреЛ рдпрд╛ рдЕрдзрд┐рдХ рднрд┐рдиреНрди IP рдкрддреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдкрдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдХрдВрдкреНрдпреВрдЯрд░реЛрдВ рдкрд░ рд╕реНрдерд┐рдд рдХрдИ рд╡реЗрдм рд╕рд░реНрд╡рд░реЛрдВ рд╕реЗ рдЕрдиреБрд░реЛрдз рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдкреЛрд░реНрдЯ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЦреЛрд▓рдирд╛ рд╣реЛрдЧрд╛ (рдкрд┐рдЫрд▓реА рд╡рд┐рдзрд┐ рджреЗрдЦреЗрдВ) рдФрд░ рдЕрдкрдиреА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░реЗрдВ рдлрд╝рд╛рдпрд░рд╡реЙрд▓, рдпрд╛ рд╡рд┐рднрд┐рдиреНрди рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ рдкрд░ рдХрдИ рд╕реЙрдХреЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, libfcgi рд▓рд╛рдЗрдмреНрд░реЗрд░реА IPv6 рдкрддреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреА рд╣реИ - 1996 рдореЗрдВ рд╡рд╛рдкрд╕, рдпрд╣ рдорд╛рдирдХ рдмрд╕ рдкреИрджрд╛ рд╣реБрдЖ рдерд╛, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдЕрдкрдиреЗ рднреВрдЦ рдХреЛ рдирд┐рдпрдорд┐рдд IPv4 рдкрддреЛрдВ рддрдХ рд╕реАрдорд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд╕рдЪ рд╣реИ, рдЕрдЧрд░ рдЖрдкрдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ IPv6 рд╕рдорд░реНрдерди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдЬреЛрдбрд╝рдирд╛ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдЖрд╕рд╛рди рд╣реИ, FCGX_OpenSocket рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкреИрдЪ рдХрд░рдирд╛ - рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд▓рд╛рдЗрд╕реЗрдВрд╕ рдпрд╣ рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдЪреЗрддрд╛рд╡рдиреА! рд╕реЙрдХреЗрдЯ рдмрдирд╛рддреЗ рд╕рдордп рдПрдХ рдЖрдИрдкреА рдкрддреЗ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрд░реНрдпрд╛рдкреНрдд рд╕реБрд░рдХреНрд╖рд╛ рдирд╣реАрдВ рд╣реИ - рдЖрдИрдкреА рд╕реНрдкреВрдлрд┐рдВрдЧ рд╣рдорд▓реЗ рд╕рдВрднрд╡ рд╣реИрдВ (рдкреИрдХреЗрдЯ рдХреЗ рдкреНрд░реЗрд╖рдХ рдХреЗ рдЖрдИрдкреА рдкрддреЗ рдХреЛ рдЦрд░рд╛рдм рдХрд░рдирд╛), рдЗрд╕рд▓рд┐рдП рдлрд╝рд╛рдпрд░рд╡реЙрд▓ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдЕрднреА рднреА рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЖрдорддреМрд░ рдкрд░, рдЖрдИрдкреА рд╕реНрдкреВрдлрд┐рдВрдЧ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рд░реВрдк рдореЗрдВ, рдлрд╝рд╛рдпрд░рд╡реЙрд▓ рдкреИрдХреЗрдЯ рдХреЗ рдЖрдИрдкреА рдкрддреЗ рдФрд░ рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛рд░реНрдб рдХреЗ рдореИрдХ рдкрддреЗ рдХреЗ рдмреАрдЪ рд╣рдорд╛рд░реЗ рд╕реНрдерд╛рдиреАрдп рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рд╕рднреА рдореЗрдЬрдмрд╛рдиреЛрдВ (рдЕрдзрд┐рдХ рд╕рдЯреАрдХ, рд╣рдорд╛рд░реЗ рдореЗрдЬрдмрд╛рди рдХреЗ рд╕рд╛рде рдкреНрд░рд╕рд╛рд░рдг рдбреЛрдореЗрди рдХреЗ рд▓рд┐рдП) рдХреЗ рдкрддреНрд░рд╛рдЪрд╛рд░ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЗрдВрдЯрд░рдиреЗрдЯ рд╕реЗ рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдкреИрдХреЗрдЯреЛрдВ рдХреЛ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рд░рд┐рд╡рд░реНрд╕ рдкрддрд╛ рдирд┐рдЬреА рдЖрдИрдкреА рдкрддреЗ рдпрд╛ рд╕реНрдерд╛рдиреАрдп рд╣реЛрд╕реНрдЯ (рдорд╛рд╕реНрдХ 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, fc00 :: / 7, 127.0.0.0/8 рдФрд░ :: 1/128) рдХреЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИред рдлрд┐рд░ рднреА, рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреА рдЗрд╕ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрднреА рднреА рдмреЗрд╣рддрд░ рд╣реИ - рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдП рдЧрдП рдлрд╝рд╛рдпрд░рд╡реЙрд▓ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдПрдХ рдлреЗрдХ рдЖрдИрдкреА рдкрддреЗ рд╕реЗ "рдореМрдд рдХрд╛ рдкреИрдХреЗрдЯ" рднреЗрдЬрдирд╛ рдХрд┐рд╕реА рднреА рдПрдХ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдХрдард┐рди рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЯреАрд╕реАрдкреА рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдиреЗ рдЖрдИрдкреА рд╕реНрдкреВрдлрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╕реБрд░рдХреНрд╖рд╛ рдХреА рд╣реИред
рд╣реЛрд╕реНрдЯ рдбреЛрдореЗрди рдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдВрддрд┐рдо рдкреНрд░рдХрд╛рд░ рдХрд╛ рдХрдиреЗрдХреНрд╢рди рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реИ:
"example.com:5000" "localhost:9000"
рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реЛрд╕реНрдЯ рдХреЗ рдбреЛрдореЗрди рдирд╛рдо рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЖрдИрдкреА рдкрддрд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдкреНрд░рддрд┐рдмрдВрдз рд╕рдорд╛рди рд╣реИрдВ - рдореЗрдЬрдмрд╛рди рдХреЗ рдкрд╛рд╕ рдПрдХ рдЖрдИрдкреАрд╡реА 4 рдкрддрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрдиреНрдпрдерд╛ рдПрдХ рддреНрд░реБрдЯрд┐ рд╣реЛрдЧреАред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рд╕реЙрдХреЗрдЯ FastCGI рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдПрдХ рдмрд╛рд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдпрд╣ рд╡рд┐рдзрд┐ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ - рдпрд╣ рдЕрднреА рднреА рдЖрдИрдкреА рдкрддреЗ рдХреЛ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ (рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ, рдЖрдИрдкреА рдкрддреЗ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдмрд╛рдж рдЖрдкрдХреЛ рдЕрдкрдиреЗ FastCGI рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рдирд╛ рд╣реЛрдЧрд╛)ред рджреВрд╕рд░реА рдУрд░, рдпрд╣ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдмрдбрд╝реЗ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ - рдПрдХ рдЖрдИрдкреА рдирд╛рдо рд╕реЗ рдбреЛрдореЗрди рдирд╛рдо рдпрд╛рдж рд░рдЦрдирд╛ рдЕрднреА рднреА рдЖрд╕рд╛рди рд╣реИред
рдмреИрдХрд▓реЙрдЧ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рджреВрд╕рд░рд╛ рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЙрдХреЗрдЯ рдЕрдиреБрд░реЛрдз рдХрддрд╛рд░ рдХреА рд▓рдВрдмрд╛рдИ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рд╡рд┐рд╢реЗрд╖ рдорд╛рди 0 (рд╢реВрдиреНрдп) рдХрд╛ рдЕрд░реНрде рд╣реИ рдЗрд╕ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХрддрд╛рд░ рд▓рдВрдмрд╛рдИред
рд╣рд░ рдмрд╛рд░ рдПрдХ рдЕрдиреБрд░реЛрдз рд╡реЗрдм рд╕рд░реНрд╡рд░ рд╕реЗ рдЖрддрд╛ рд╣реИ, рд╣рдорд╛рд░реЗ FastCGI рдХрд╛рд░реНрдпрдХреНрд░рдо рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддреЗ рд╕рдордп рдЗрд╕ рдХрддрд╛рд░ рдореЗрдВ рдПрдХ рдирдпрд╛ рдХрдиреЗрдХреНрд╢рди рдбрд╛рд▓рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдХрддрд╛рд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рднрд░реА рд╣реБрдИ рд╣реИ, рддреЛ рдмрд╛рдж рдХреЗ рд╕рднреА рдХрдиреЗрдХреНрд╢рди рдЕрдиреБрд░реЛрдз рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдПрдВрдЧреЗ - рд╡реЗрдм рд╕рд░реНрд╡рд░ рдХреЛ рдПрдХ рдХрдиреЗрдХреНрд╢рди рдЕрд╕реНрд╡реАрдХреГрдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ (рдХрдиреЗрдХреНрд╢рди рдордирд╛ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛) рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧрд╛ред рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдЗрд╕рдореЗрдВ рдХреБрдЫ рднреА рдЧрд▓рдд рдирд╣реАрдВ рд╣реИ - рдирдЧреНрдиреЗрдХреНрд╕ рд╡реЗрдм рд╕рд░реНрд╡рд░ рдХреА рдЕрдкрдиреА рдЕрдиреБрд░реЛрдз рдХрддрд╛рд░ рд╣реИ, рдФрд░ рдпрджрд┐ рдХреЛрдИ рдореБрдХреНрдд рд╕рдВрд╕рд╛рдзрди рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдирдП рдЕрдиреБрд░реЛрдз рд╡реЗрдм рд╕рд░реНрд╡рд░ рдХрддрд╛рд░ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдВрд╕рд╛рдзрд┐рдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рдмрд╛рд░реА рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░реЗрдВрдЧреЗ (рдХрдо рд╕реЗ рдХрдо рдЬрдм рддрдХ рд╕рдордп рдмрд╛рд╣рд░)ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ FastCGI-program рдЪрд▓рд╛рдиреЗ рд╡рд╛рд▓реЗ рдХрдИ рд╕рд░реНрд╡рд░ рд╣реИрдВ, рддреЛ Nginx рдЗрд╕ рддрд░рд╣ рдХреЗ рдЕрдиреБрд░реЛрдз рдХреЛ рдХрдо рд▓реЛрдб рд╡рд╛рд▓реЗ рд╕рд░реНрд╡рд░ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рддреЛ, рдЪрд▓реЛ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ рдХрд┐ рдХреМрди рд╕реА рдХрддрд╛рд░ рдХреА рд▓рдВрдмрд╛рдИ рдЗрд╖реНрдЯрддрдо рд╣реЛрдЧреАред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рддрдирд╛рд╡ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдЖрдВрдХрдбрд╝реЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЗрд╕ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдЗрд╕ рдореВрд▓реНрдп рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЙрдкрдпреБрдХреНрдд рд╕реАрдорд╛ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВрдЧреЗред рдкрд╣рд▓реА рдЪреАрдЬрд╝ рдЬреЛ рдЖрдкрдХреЛ рдЬрд╛рдирдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рдЕрдзрд┐рдХрддрдо рдХрддрд╛рд░ рдХреА рд▓рдВрдмрд╛рдИ рд╕реАрдорд┐рдд рд╣реИ (рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреА рдХрд░реНрдиреЗрд▓ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИ, рдЖрдорддреМрд░ рдкрд░ 1024 рдХрдиреЗрдХреНрд╢рди рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ)ред рджреВрд╕рд░рд╛ - рдХрддрд╛рд░ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдЙрдкрднреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рд╕рд╕реНрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрднреА рднреА рд╕рдВрд╕рд╛рдзрди рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдЕрдиреБрдЪрд┐рдд рд░реВрдк рд╕реЗ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ FastCGI рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ 8 рд╡рд░реНрдХрдлрд╝реНрд▓реЛрдЬрд╝ (рдЖрдзреБрдирд┐рдХ 4-8-рдХреЛрд░ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рдпрдерд╛рд░реНрдерд╡рд╛рджреА) рд╣реИрдВ, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдереНрд░реЗрдб рдХреЛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдХрдиреЗрдХреНрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╡реЗрдм рд╕рд░реНрд╡рд░ рд╕реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА 8 рдЕрдиреБрд░реЛрдз рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП, рддрд╛рдХрд┐ рддреБрд░рдВрдд, рдЕрдирд╛рд╡рд╢реНрдпрдХ рджреЗрд░реА рдХреЗ рдмрд┐рдирд╛, рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╕рднреА рдереНрд░реЗрдб рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдиреНрдпреВрдирддрдо рдЕрдиреБрд░реЛрдз рдХрддрд╛рд░ рдХрд╛ рдЖрдХрд╛рд░ FastCGI рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рдХрд╛рд░реНрдп рдереНрд░реЗрдбреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реИред рдЖрдк рд▓реЛрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдорд╛рд░реНрдЬрд┐рди рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдореВрд▓реНрдп рдХреЛ 50% -100% рддрдХ рдмрдврд╝рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдХрд╛ рд╕рдордп рд╕реАрдорд┐рдд рд╣реИред
рдЕрдм рдЗрд╕ рдорд╛рддреНрд░рд╛ рдХреА рдКрдкрд░реА рд╕реАрдорд╛ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ рдЖрдкрдХреЛ рдпрд╣ рдЬрд╛рдирдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд┐рддрдиреЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕ рдореВрд▓реНрдп рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рдХрддрд╛рд░ рдХреЛ рд╕реАрдорд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рдЖрдкрдиреЗ рдЗрд╕ рдХрддрд╛рд░ рдХреЛ рдмрд╣реБрдд рдмрдбрд╝рд╛ рдмрдирд╛ рджрд┐рдпрд╛ рд╣реИ - рдЗрддрдирд╛ рдЕрдзрд┐рдХ рдХрд┐ рдЖрдкрдХреЗ рдЧреНрд░рд╛рд╣рдХ рдЕрдкрдиреА рдмрд╛рд░реА рдХреЗ рдЗрдВрддрдЬрд╛рд░ рдореЗрдВ рдКрдм рдЧрдП рд╣реИрдВ рдФрд░ рд╡реЗ рдмрд╕ рдЖрдкрдХреА рд╕рд╛рдЗрдЯ рдкрд░ рдПрдХ рдЙрддреНрддрд░ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд┐рдП рдмрд┐рдирд╛ рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВред рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдЗрд╕рдореЗрдВ рдХреБрдЫ рднреА рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИ - рд╡реЗрдм рд╕рд░реНрд╡рд░ рдХреЛ рдПрдХ рдХрдиреЗрдХреНрд╢рди рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рднреЗрдЬрдирд╛ рдерд╛, рдЬреЛ рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдорд╣рдВрдЧрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдЗрд╕ рдХрдиреЗрдХреНрд╢рди рдХреЛ рдХреЗрд╡рд▓ рдЗрд╕рд▓рд┐рдП рдмрдВрдж рдХрд░ рджреЗрдВ рдХреНрдпреЛрдВрдХрд┐ FastCGI рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рдкрд╛рд╕ рдЗрд╕ рдЕрдиреБрд░реЛрдз рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╕рдордп рдирд╣реАрдВ рдерд╛ред рдПрдХ рд╢рдмреНрдж рдореЗрдВ, рд╣рдо рдХреЗрд╡рд▓ рд╕реАрдкреАрдпреВ рд╕рдордп рдмрд░реНрдмрд╛рдж рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЗрд╕рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ! рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдмрд╕реЗ рдмреБрд░реА рдмрд╛рдд рдирд╣реАрдВ рд╣реИ - рдпрд╣ рддрдм рдФрд░ рдмреБрд░рд╛ рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдЧреНрд░рд╛рд╣рдХ рдиреЗ рдЖрдкрдХреА рд╕рд╛рдЗрдЯ рд╕реЗ рдкрд╣рд▓реЗ рд╣реА рдЗрд╕ рдХреНрд╖реЗрддреНрд░ рдХреА рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛ рдерд╛ред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдЕрдиреБрд░реЛрдз рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЬрд┐рд╕реЗ рдЖрдк рджреЗрдЦрддреЗ рд╣реИрдВ, рдХреЗрд╡рд▓ рд╕реНрдерд┐рддрд┐ рдЦрд░рд╛рдм рд╣реЛ рдЬрд╛рдПрдЧреАред рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд░реВрдк рд╕реЗ, рдПрдХ рд╕реНрдерд┐рддрд┐ рдЙрддреНрдкрдиреНрди рд╣реЛ рд╕рдХрддреА рд╣реИ рдЬрдм рдЕрдзрд┐рдХрд╛рдВрд╢ рдЧреНрд░рд╛рд╣рдХ рдЖрдкрдХреЗ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ 100% рд▓реЛрдб рдкрд░ рдЙрддреНрддрд░ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред рдпрд╣ рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИред
рддреЛ, рдорд╛рди рд▓реЗрдВ рдХрд┐ рдПрдХ рдЕрдиреБрд░реЛрдз рд╣рдо 300 рдорд┐рд▓реАрд╕реЗрдХрдВрдб (рдпрд╛рдиреА 0.3 рд╕реЗрдХрдВрдб) рдореЗрдВ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдпрджрд┐ рд╡реЗрдм рдкреЗрдЬ 30 рд╕реЗрдХрдВрдб рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рддрдХ рд▓реЛрдб рд░рд╣рддрд╛ рд╣реИ, рддреЛ рдФрд╕рддрди 50% рдЖрдЧрдВрддреБрдХ рд╕рдВрд╕рд╛рдзрди рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВред рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдЕрд╕рдВрддреБрд╖реНрдЯ рд▓реЛрдЧреЛрдВ рдореЗрдВ рд╕реЗ 50% рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЕрдзрд┐рдХрддрдо рдкреГрд╖реНрда рд▓реЛрдб рд╕рдордп рдХреЛ 5 рд╕реЗрдХрдВрдб рддрдХ рд╕реАрдорд┐рдд рдХрд░ рджреЗрдВрдЧреЗред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдПрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдорд╛рдкреНрдд рд╡реЗрдм рдкреЗрдЬ - рдХреИрд╕реНрдХреЗрдбрд┐рдВрдЧ рд╕реНрдЯрд╛рдЗрд▓ рд╢реАрдЯ рд▓рдЧрд╛рдиреЗ рдФрд░ рдЬрд╛рд╡рд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж - рдПрдХ рдФрд╕рдд рд╕рд╛рдЗрдЯ рдкрд░ рдпрд╣ рдЪрд░рдг рдХреБрд▓ рд╡реЗрдм рдкреЗрдЬ рд▓реЛрдб рд╕рдордп рдХрд╛ 70% рддрдХ рд▓реЗ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдбреЗрдЯрд╛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 5 * 0.3 = 1.5 рд╕реЗрдХрдВрдб рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рдмрдЪреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдпрд╣ рдпрд╛рдж рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ HTML рдХреЛрдб, рд╕реНрдЯрд╛рдЗрд▓ рд╢реАрдЯ, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╕рдВрдЪрд░рд┐рдд рд╣реИрдВ, рдкрд╣рд▓реЗ html рдХреЛрдб, рдФрд░ рдлрд┐рд░ рд╕рдм рдХреБрдЫред рд╣рд╛рд▓рд╛рдВрдХрд┐, HTML рдХреЛрдб рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рд╢реЗрд╖ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддрд╛ рд╣реИ, рддрд╛рдХрд┐ рдЖрдк рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрд▓ рд╕рдордп рдХреЗ 50% рдХреЗ рд░реВрдк рдореЗрдВ HTML рдХреЛрдб рдХреЗ рд▓реЛрдбрд┐рдВрдЧ рд╕рдордп рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХреЗрдВред рдЗрд╕рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдЕрдиреБрд░реЛрдз рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 1.5 * 0.5 = 0.75 рд╕реЗрдХрдВрдб рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рдмрдЪрд╛ рд╣реИред рдпрджрд┐ рдФрд╕рддрди рдПрдХ рдзрд╛рдЧрд╛ 0.3 рд╕реЗрдХрдВрдб рдореЗрдВ рдЕрдиреБрд░реЛрдз рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИ, рддреЛ рдХрддрд╛рд░ рдореЗрдВ рдкреНрд░рддрд┐ рдзрд╛рдЧрд╛ 0.75 / 0.3 = 2.5 рдЕрдиреБрд░реЛрдз рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЪреВрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ 8 рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдХрддрд╛рд░ рдХрд╛ рдЖрдХрд╛рд░ 2.5 * 8 = 20 рдЕрдиреБрд░реЛрдз рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдореИрдВ рдЙрдкрд░реЛрдХреНрдд рдЧрдгрдирд╛рдУрдВ рдХреЗ рд╕рдореНрдореЗрд▓рдиреЛрдВ рдХреЛ рдиреЛрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ - рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рд╛рдЗрдЯ рд╣реИ, рддреЛ рдЧрдгрдирд╛ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдпрд╣ рдЕрдзрд┐рдХ рдЗрд╖реНрдЯрддрдо рдкреНрд░рджрд░реНрд╢рди рдЯреНрдпреВрдирд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдмрд┐рдВрджреБ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
рддреЛ, рд╣рдореЗрдВ рдПрдХ рд╕реЙрдХреЗрдЯ рд╡рд┐рд╡рд░рдгрдХ рдорд┐рд▓рд╛, рдЙрд╕рдХреЗ рдмрд╛рдж рд╣рдореЗрдВ рдЕрдиреБрд░реЛрдз рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд▓рд┐рдП рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рд╡рд┐рд╡рд░рдг рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
typedef struct FCGX_Request { int requestId; int role; FCGX_Stream *in; FCGX_Stream *out; FCGX_Stream *err; char **envp; struct Params *paramsPtr; int ipcFd; int isBeginProcessed; int keepConnection; int appStatus; int nWriters; int flags; int listen_sock; int detached; } FCGX_Request;
рдЪреЗрддрд╛рд╡рдиреА! рдПрдХ рдирдпрд╛ рдЕрдиреБрд░реЛрдз рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдкрд┐рдЫрд▓реЗ рд╕рднреА рдбреЗрдЯрд╛ рдЦреЛ рдЬрд╛рдПрдВрдЧреЗ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдкрдХреЛ рдбреЗрдЯрд╛ рдХреЗ рджреАрд░реНрдШрдХрд╛рд▓рд┐рдХ рднрдВрдбрд╛рд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЧрд╣рд░реА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ (рдбреЗрдЯрд╛ рдХреЛ рд╕реНрд╡рдпрдВ рдХреЙрдкреА рдХрд░реЗрдВ, рдбреЗрдЯрд╛ рдХреЛ рдЗрдВрдЧрд┐рдд рдирд╣реАрдВ рдХрд░реЗрдВ)ред
рдЖрдкрдХреЛ рдЗрд╕ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рд┐рдП:
- рдХреНрд░рдорд╢рдГ, рдмрд╛рд╣рд░, рдФрд░ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдЪрд░ рдЗрдирдкреБрдЯ, рдЖрдЙрдЯрдкреБрдЯ рдФрд░ рддреНрд░реБрдЯрд┐ рдкреНрд░рд╡рд╛рд╣ рдХреА рднреВрдорд┐рдХрд╛ рдирд┐рднрд╛рддреЗ рд╣реИрдВред рдЗрдирдкреБрдЯ рд╕реНрдЯреНрд░реАрдо рдореЗрдВ POST рд░рд┐рдХреНрд╡реЗрд╕реНрдЯ рдХрд╛ рдбреЗрдЯрд╛ рд╣реЛрддрд╛ рд╣реИ, FastCGI рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, http- рд╣реЗрдбрд░ рдФрд░ рд╡реЗрдм рдкреЗрдЬ рдХрд╛ HTML-рдХреЛрдб) рдЖрдЙрдЯрдкреБрдЯ рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рднреЗрдЬреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдП, рдФрд░ рдПрд░рд░ рд╕реНрдЯреНрд░реАрдо рдмрд╕ рд╡реЗрдм рд╕рд░реНрд╡рд░ рдХреЛ рдПрд░рд░ рд▓реЙрдЧ рдореЗрдВ рдЬреЛрдбрд╝реЗрдЧреАред рдЙрд╕реА рд╕рдордп, рдЖрдкрдХреЛ рддреНрд░реБрдЯрд┐ рд╕реНрдЯреНрд░реАрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ - рдпрджрд┐ рдЖрдкрдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рд▓реЙрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рд╢рд╛рдпрдж рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдПрдХ рдЕрд▓рдЧ рдлрд╝рд╛рдЗрд▓ - рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдорд┐рд╢рди рдФрд░ рд╡реЗрдм рд╕рд░реНрд╡рд░ рджреНрд╡рд╛рд░рд╛ рдЙрдирдХреЗ рдмрд╛рдж рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рдЦрдкрдд рд╣реЛрддреА рд╣реИред
- envp рд╡реИрд░рд┐рдПрдмрд▓ рдореЗрдВ рд╡реЗрдм рд╕рд░реНрд╡рд░ рдФрд░ http рд╣реЗрдбрд░ рджреНрд╡рд╛рд░рд╛ рд╕реЗрдЯ рдХрд┐рдП рдЧрдП рдкрд░реНрдпрд╛рд╡рд░рдг рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХреЗ рдореВрд▓реНрдп рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП: SERVER_PROTOCOL, REQUEST_METHOD, REQUEST_URI, QUERY_STRING, CONTENT_LENGTH, HTTP_USER_AGENT, HTTP_COOKIE, HTTP_REFER рдФрд░ so рдпреЗ рд╣реЗрдбрд░ рдХреНрд░рдорд╢рдГ CGI рдФрд░ HTTP рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдорд╛рдирдХреЛрдВ рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдП рдЧрдП рд╣реИрдВ, рдЙрдирдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХрд┐рд╕реА рднреА CGI рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рдкрд╛рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдбреЗрдЯрд╛ рдЦреБрдж рдХреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рдПрдХ рд╕рд░рдгреА рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╕рд░рдгреА рдХреЗ рдЕрдВрддрд┐рдо рддрддреНрд╡ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╢реВрдиреНрдп рд╕реВрдЪрдХ (NULL) рдпреБрдХреНрдд рд╕рд░рдгреА рдХреЗ рдЕрдВрддрд┐рдо рддрддреНрд╡ рдХреЗ рд╕рд╛рдеред рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ (рд╕реНрдЯреНрд░рд┐рдВрдЧ рдРрд░реЗ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡) рдореЗрдВ TITLE_VARIABLE = VALUE рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдПрдХ рдЪрд░ рдорд╛рди рд╣реЛрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП: CONTENT_LENGTH = 0 (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЗрд╕ рдЕрдиреБрд░реЛрдз рдореЗрдВ POST рдбреЗрдЯрд╛ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХреА рд▓рдВрдмрд╛рдИ рд╢реВрдиреНрдп рд╣реИ)ред рдпрджрд┐ рдПрдирд╡реАрдкреА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдРрд░реЗ рдореЗрдВ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЖрд╡рд╢реНрдпрдХ рд╣реЗрдбрд░ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЗрд╕реЗ рдкрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрджрд┐ рдЖрдк FastCGI рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рджрд┐рдП рдЧрдП рдЪрд░ рдХреЗ рд╕рднреА рдореВрд▓реНрдпреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдмрд╕ рдПрдирдПрд▓рд╡реА рдХреА рд╕рднреА рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдПрдХ рд▓реВрдк рдореЗрдВ рдкрдврд╝реЗрдВ, рдЬрдм рддрдХ рдХрд┐ рдЖрдк NULL рдХреЛ рдкреЙрдЗрдВрдЯрд░ рди рдвреВрдВрдв рд▓реЗрдВред
рджрд░рдЕрд╕рд▓, рд╣рдордиреЗ рдЗрд╕реЗ рдЗрд╕ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рдХрд┐рдпрд╛ рд╣реИ - рдЖрдкрдХреЛ рдЕрдиреНрдп рд╕рднреА рдЪрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреАред
рд╕реНрдореГрддрд┐ рдЖрд╡рдВрдЯрд┐рдд рдХреА рдЧрдИ рдереА, рдЕрдм рдЖрдкрдХреЛ рдЕрдиреБрд░реЛрдз рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
int FCGX_InitRequest(FCGX_Request *request, int sock, int flags);
рдлрд╝рдВрдХреНрд╢рди рдкреИрд░рд╛рдореАрдЯрд░ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИрдВ:
рдЕрдиреБрд░реЛрдз - рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реВрдЪрдХ рдХреЛ рдЖрд░рдВрднреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рд╣реИ
sock FCGX_OpenSocket рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдкреНрд░рд╛рдкреНрдд рд╕реЙрдХреЗрдЯ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рд╣реИред рдореИрдВ рдпрд╣ рдиреЛрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ рдПрдХ рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдХреЗ рдмрдЬрд╛рдп, рдЖрдк 0 (рд╢реВрдиреНрдп) рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рд╕реЙрдХреЗрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдпрд╣ рд╡рд┐рдзрд┐ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рдирд╣реАрдВ рд╣реИ - рд╕реЙрдХреЗрдЯ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдореБрдХреНрдд рдкреЛрд░реНрдЯ рдкрд░ рдЦреЛрд▓рд╛ рдЬрд╛рдПрдЧрд╛, рдЬрд┐рд╕реЗ рд╣рдо рдЕрдкрдиреЗ рд╡реЗрдм рдХреЛ рдареАрдХ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдирд╣реАрдВ рдХрд░ рдкрд╛рдПрдВрдЧреЗ -рд╕реЗрд╡рд░ - рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдбреЗрдЯрд╛ рдХрд╣рд╛рдВ рднреЗрдЬрд╛ рдЬрд╛рдПред
рдЭрдВрдбреЗ - рдЭрдВрдбреЗред рджрд░рдЕрд╕рд▓, рдЗрд╕ рдлрдВрдХреНрд╢рди рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рдЭрдВрдбрд╛ рд▓рдЧрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - FCGI_FAIL_ACCEPT_ON_INTR - FCGX_Accept_r рдХреЛ рдмреНрд░реЗрдХ рдкрд░ рди рдмреБрд▓рд╛рдПрдВред
рдЙрд╕рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдПрдХ рдирдпрд╛ рдЕрдиреБрд░реЛрдз рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
int FCGX_Accept_r(FCGX_Request *request);
рдЗрд╕рдореЗрдВ, рдЖрдкрдХреЛ рдЕрдВрддрд┐рдо рдЪрд░рдг рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдиреБрд░реЛрдзрд┐рдд рд╕рдВрд░рдЪрдирд╛ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдЪреЗрддрд╛рд╡рдиреА! рдПрдХ рдмрд╣реБ-рдереНрд░реЗрдбреЗрдб рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ, рдЖрдкрдХреЛ рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╕рдордп рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рджрд░рдЕрд╕рд▓, рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рд╕реЙрдХреЗрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдкрд░ рд╕рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ: рдкрд╣рд▓реЗ, рдпрд╣ рдкрд┐рдЫрд▓реЗ рдЕрдиреБрд░реЛрдз рдкрд░ рд╡реЗрдм рд╕рд░реНрд╡рд░ рдХреЛ рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рднреЗрдЬрддрд╛ рд╣реИ (рдпрджрд┐ рдХреЛрдИ рдерд╛), рдкрд┐рдЫрд▓реЗ рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдЪреИрдирд▓ рдХреЛ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝реЗ рд╕рднреА рд╕рдВрд╕рд╛рдзрдиреЛрдВ (рдЕрдиреБрд░реЛрдз рд╕рдВрд░рдЪрдирд╛ рдЕрдВрддрд░рд╛рд▓ рд╕рд╣рд┐рдд) рдХреЛ рдореБрдХреНрдд рдХрд░ рджреЗрддрд╛ рд╣реИ, рддрдм рдпрд╣ рдПрдХ рдирдпрд╛ рдЕрдиреБрд░реЛрдз рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рдПрдХ рдирдпрд╛ рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдорд┐рд╢рди рдЪреИрдирд▓ рдЦреЛрд▓рддрд╛ рд╣реИ рдФрд░ рдмрд╛рдж рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдирдпрд╛ рдбреЗрдЯрд╛ рддреИрдпрд╛рд░ рдХрд░рддрд╛ рд╣реИред рдирдпрд╛ рдЕрдиреБрд░реЛрдз рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рддреНрд░реБрдЯрд┐ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдлрд╝рдВрдХреНрд╢рди рд╢реВрдиреНрдп рд╕реЗ рдХрдо рддреНрд░реБрдЯрд┐ рдХреЛрдб рджреЗрддрд╛ рд╣реИред
рдЗрд╕рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рд╕рдВрднрд╡рддрдГ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрдк рдЕрдиреБрд░реЛрдз рдХреЛ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ-> рдПрдирд╡реАрдкреА рд╕рд░рдгреА, рдпрд╛ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
char *FCGX_GetParam(const char *name, FCGX_ParamArray envp);
рдЬрд╣рд╛рдВ рдирд╛рдо рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдпрд╛ http-рд╣реИрдбрд░ рдХрд╛ рдирд╛рдо рд╣реИ рдЬрд┐рд╕рдХрд╛ рдореВрд▓реНрдп рдЖрдк рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ,
envp - рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХрд╛ рдПрдХ рд╕рд░рдгреА рдЬреЛ рдЕрдиреБрд░реЛрдз рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИ-> envp рдЪрд░
рдлрд╝рдВрдХреНрд╢рди рдПрдХ рдЪрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХрд╛ рдорд╛рди рд▓реМрдЯрд╛рддрд╛ рд╣реИред рд╕рд╛рд╡рдзрд╛рди рдкрд╛рдардХ рдХреЛ char ** рдФрд░ FCGX_ParamArray рдХреЗ рдмреАрдЪ рдХреЗ рдмреЗрдореЗрд▓ рдкреНрд░рдХрд╛рд░ рд╕реЗ рдбрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИ - рдЗрди рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рд╕рдорд╛рдирд╛рд░реНрдердХ рд╢рдмреНрдж (typedef char ** FCGX_ParamArray) рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдкрдХреЛ рд╕рдВрднрд╡рддрдГ рд╡реЗрдм рд╕рд░реНрд╡рд░ рдХреЛ рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рднреЗрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдЙрдЯрдкреБрдЯ рд╕реНрдЯреНрд░реАрдо рдФрд░ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЕрдиреБрд░реЛрдз-> рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
int FCGX_PutStr(const char *str, int n, FCGX_Stream *stream);
рдЬрд╣рд╛рдВ str рдПрдХ рдмрдлрд░ рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдпреБрдХреНрдд рд╣реЛрддрд╛ рд╣реИ, рдмрд┐рдирд╛ рдЯрд░реНрдорд┐рдиреЗрдЯрд┐рдВрдЧ рдЬреАрд░реЛ (рдпрд╛рдиреА, рдмрдлрд░ рдореЗрдВ рдмрд╛рдЗрдирд░реА рдбреЗрдЯрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ),
n - рдмрд╛рдЗрдЯреНрд╕ рдореЗрдВ рдмрдлрд░ рд▓рдВрдмрд╛рдИ,
рд╕реНрдЯреНрд░реАрдо - рд╡рд╣ рд╕реНрдЯреНрд░реАрдо рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдбреЗрдЯрд╛ (рдЕрдиреБрд░реЛрдз-> рдЖрдЙрдЯ рдпрд╛ рдЕрдиреБрд░реЛрдз-> рдЗрд░реЗрдЯ) рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
рдпрджрд┐ рдЖрдк рдПрдХ рд╕рдорд╛рдкреНрддрд┐ рд╢реВрдиреНрдп рдХреЗ рд╕рд╛рде рд╕реА-рд╕реНрдЯреНрд░рд┐рдВрдЧ рдорд╛рдирдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрдЧрд╛
int FCGX_PutS(const char *str, FCGX_Stream *stream);
рдЬреЛ рд╕реНрдЯреНрд░реЗрд▓ (рд╕реНрдЯреНрд░) рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдмрд╕ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреА рд▓рдВрдмрд╛рдИ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкрд┐рдЫрд▓реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреА рд▓рдВрдмрд╛рдИ рдЬрд╛рдирддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк C ++ std :: string рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ), рддреЛ рджрдХреНрд╖рддрд╛ рдХрд╛рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдкрд┐рдЫрд▓реЗ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред
рдореИрдВ рдпрд╣ рдиреЛрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдпреЗ рдлрд╝рдВрдХреНрд╢рди UTF-8 рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде рдареАрдХ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдмрд╣реБрднрд╛рд╖реА рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред
рдЖрдк рдПрдХ рд╣реА рдЕрдиреБрд░реЛрдз рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рджреМрд░рд╛рди рдХрдИ рдмрд╛рд░ рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рднреА рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдпрд╣ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХреБрдЫ рдмрдбрд╝реА рдлрд╝рд╛рдЗрд▓ рднреЗрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рд╛рд░реНрдб рдбреНрд░рд╛рдЗрд╡ рд╕реЗ рдкреВрд░реА рдлрд╝рд╛рдЗрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ "рдПрдХ рдЯреБрдХрдбрд╝реЗ рдореЗрдВ" рднреЗрдЬрдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдЖрдк рддреБрд░рдВрдд рдбреЗрдЯрд╛ рднреЗрдЬрдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдирддреАрдЬрддрди, рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреА рд╕рдлреЗрдж рд╕реНрдХреНрд░реАрди рдХреЗ рдмрдЬрд╛рдп рдХреНрд▓рд╛рдЗрдВрдЯ рдЙрд╕реЗ рд░реБрдЪрд┐ рдХреЗ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрдЧрд╛, рдЬреЛ рд╡рд┐рд╢реБрджреНрдз рд░реВрдк рд╕реЗ рдордиреЛрд╡реИрдЬреНрдЮрд╛рдирд┐рдХ рд░реВрдк рд╕реЗ рдЙрд╕реЗ рдереЛрдбрд╝реА рджреЗрд░ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдЧрд╛ред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдЖрдк рдкреГрд╖реНрда рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕рдордп рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдореИрдВ рдпрд╣ рднреА рдиреЛрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рдВрд╕рд╛рдзрди (рдХреИрд╕реНрдХреЗрдбрд┐рдВрдЧ рд╕реНрдЯрд╛рдЗрд▓ рд╢реАрдЯ, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрд╕, рдЗрддреНрдпрд╛рджрд┐) рд╡реЗрдм рдкреЗрдЬ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХрд┐рдП рдЧрдП рд╣реИрдВ, рдЕрд░реНрдерд╛рдд, рдмреНрд░рд╛рдЙрдЬрд╝рд░ HTML рдХреЛрдб рдХреЗ рдХреБрдЫ рд╣рд┐рд╕реНрд╕реЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЗрди рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рд▓реЛрдб рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ - рдбреЗрдЯрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдФрд░ рдХрд╛рд░рдг рднрд╛рдЧреЛрдВ рдореЗрдВред
рдЕрдЧрд▓реА рдЪреАрдЬрд╝ рдЬреЛ рдЖрдкрдХреЛ рдЪрд╛рд╣рд┐рдП рд╡рд╣ рд╣реИ POST рдЕрдиреБрд░реЛрдз рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛ред рдЗрд╕рдХреЗ рдореВрд▓реНрдп рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбреЗрдЯрд╛ рдХреЛ рдЕрдиреБрд░реЛрдз-> рд╕реЗ рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рдкрдврд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
int FCGX_GetStr(char * str, int n, FCGX_Stream *stream);
рдЬрд╣рд╛рдВ str рдПрдХ рдмрдлрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдХреЗрддрдХ рд╣реИ,
n рдмрд╛рдЗрдЯреНрд╕ рдореЗрдВ рдмрдлрд░ рдХрд╛ рдЖрдХрд╛рд░ рд╣реИ,
рд╕реНрдЯреНрд░реАрдо - рд╡рд╣ рд╕реНрдЯреНрд░реАрдо рдЬрд┐рд╕рд╕реЗ рд╣рдо рдбреЗрдЯрд╛ рдкрдврд╝ рд░рд╣реЗ рд╣реИрдВред
POST рдЕрдиреБрд░реЛрдз рдореЗрдВ рдкреНрд░реЗрд╖рд┐рдд рдбреЗрдЯрд╛ рдХрд╛ рдЖрдХрд╛рд░ (рдмрд╛рдЗрдЯреНрд╕ рдореЗрдВ) рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ CONTENT_LENGTH рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдореВрд▓реНрдп, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВ, FCGX_GetParam рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЪреЗрддрд╛рд╡рдиреА! рдмрд┐рдирд╛ рдХрд┐рд╕реА рдкреНрд░рддрд┐рдмрдВрдз рдХреЗ CONTENT_LENGTH рд╡реИрд░рд┐рдПрдмрд▓ рдХреЗ рдореВрд▓реНрдп рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рд╕реНрдЯреНрд░рд┐рдлрд╝ рдмрдлрд░ рдмрдирд╛рдирд╛ рдПрдХ рдмрд╣реБрдд рдмреБрд░рд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ: рдХреЛрдИ рднреА рд╣рдорд▓рд╛рд╡рд░ рдХрд┐рд╕реА рднреА рдмрдбрд╝реЗ POST рдЕрдиреБрд░реЛрдз рдХреЛ рднреЗрдЬ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдЖрдкрдХрд╛ рд╕рд░реНрд╡рд░ рдлреНрд░реА рд░реИрдо рд╕реЗ рдмрд╛рд╣рд░ рдЪрд▓рд╛ рд╕рдХрддрд╛ рд╣реИ (рдпрджрд┐ рдЖрдк рдЪрд╛рд╣реЗрдВ рддреЛ рдЖрдкрдХреЛ DoS рдорд┐рд▓ рдЬрд╛рдПрдЧрд╛)ред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдмрдлрд░ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдПрдХ рдЙрдЪрд┐рдд рдорд╛рддреНрд░рд╛ (рдХреБрдЫ рдХрд┐рд▓реЛрдмрд╛рдЗрдЯ рд╕реЗ рдХрдИ рдореЗрдЧрд╛рдмрд╛рдЗрдЯ рддрдХ) рддрдХ рд╕реАрдорд┐рдд рдХрд░рдирд╛ рдФрд░ FCGX_GetStr рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХрдИ рдмрд╛рд░ рдХреЙрд▓ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред
рдЕрдВрддрд┐рдо рдорд╣рддреНрд╡рдкреВрд░реНрдг рдлрд╝рдВрдХреНрд╢рди рдЖрдЙрдЯрдкреБрдЯ рдФрд░ рдПрд░рд░ рд╕реНрдЯреНрд░реАрдо рдХреЛ рдлреНрд▓реИрд╢ рдХрд░рддрд╛ рд╣реИ (рдХреНрд▓рд╛рдЗрдВрдЯ рдбреЗрдЯрд╛ рдЬреЛ рдЕрднреА рднреА рдирд╣реАрдВ рднреЗрдЬрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рд╣рдо рдЖрдЙрдЯрдкреБрдЯ рдФрд░ рдПрд░рд░ рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рдбрд╛рд▓рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣реЗ) рдФрд░ рдХрдиреЗрдХреНрд╢рди рдХреЛ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИ:
void FCGX_Finish_r(FCGX_Request *request);
рдореИрдВ рдЗрд╕ рдмрд╛рдд рдкрд░ рдЬреЛрд░ рджреЗрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реИ: FCGX_Accept_r рдлрд╝рдВрдХреНрд╢рди рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдбреЗрдЯрд╛ рднреЗрдЬрддрд╛ рд╣реИ рдФрд░ рдПрдХ рдирдпрд╛ рдЕрдиреБрд░реЛрдз рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╡рд░реНрддрдорд╛рди рдХрдиреЗрдХреНрд╢рди рдХреЛ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИред рд╕рд╡рд╛рд▓ рдпрд╣ рд╣реИ: рдлрд┐рд░ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ?
рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рдЖрдкрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛ рднреЗрдЬ рджрд┐рдП рд╣реИрдВ, рдФрд░ рдЕрдм рдЖрдкрдХреЛ рдХреБрдЫ рдЕрдВрддрд┐рдо рдСрдкрд░реЗрд╢рди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ: рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рдЖрдВрдХрдбрд╝реЗ рд▓рд┐рдЦреЗрдВ, рд▓реЙрдЧ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рддреНрд░реБрдЯрд┐рдпрд╛рдВ, рдЖрджрд┐ред рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд╕рд╛рде рд╕рдВрдмрдВрдз рдЕрдм рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдХреНрд▓рд╛рдЗрдВрдЯ (рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рдЕрд░реНрде рдореЗрдВ) рдЕрднреА рднреА рд╣рдорд╕реЗ рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реИ: рдЕрдЧрд░ рд╣рдо рдХреБрдЫ рдФрд░ рднреЗрдЬрддреЗ рд╣реИрдВ рддреЛ рдХреНрдпрд╛ рд╣реЛрдЧрд╛? рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рд╣рдо рд╕рдордп рд╕реЗ рдкрд╣рд▓реЗ FCGX_Accept_r рдХреЛ рдХреЙрд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдЗрд╕рдХреЗ рдмрд╛рдж рд╣рдореЗрдВ рдЕрдЧрд▓реЗ рдЕрдиреБрд░реЛрдз рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдмрд╕ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдкрдХреЛ FCGX_Finish_r рдлрд╝рдВрдХреНрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА - рдпрд╣ рдЖрдкрдХреЛ рдПрдХ рдирдпрд╛ рдЕрдиреБрд░реЛрдз рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╡рд░реНрддрдорд╛рди рдХрдиреЗрдХреНрд╢рди рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред рд╣рд╛рдВ, рд╣рдо рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рдкреНрд░рддрд┐ рдпреВрдирд┐рдЯ рд╕рдордп рдХреЗ рд╕рдорд╛рди рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдЧреНрд░рд╛рд╣рдХ рдХреЛ рдкрд╣рд▓реЗ рдПрдХ рдЙрддреНрддрд░ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧрд╛ - рдЙрд╕реЗ рд╣рдорд╛рд░реЗ рдЕрдВрддрд┐рдо рд╕рдВрдЪрд╛рд▓рди рдХреЗ рдЕрдВрдд рддрдХ рдЗрдВрддрдЬрд╛рд░ рдирд╣реАрдВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛,рдФрд░ рдпрд╣ рдареАрдХ рд╣реИ рдХрд┐ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рдЕрдзрд┐рдХ рдЧрддрд┐ рдХреЗ рдХрд╛рд░рдг рд╣рдо FastCGI рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВредрдЗрд╕ рдкрд░, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдкреНрд░рд╛рдкреНрдд рдЖрдВрдХрдбрд╝реЛрдВ рдХрд╛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИредрдПрдХ рдмрд╣реБ-рдереНрд░реЗрдбреЗрдб FastCGI рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд╛ рдПрдХ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд╕рдм рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рдпрд╣ рд╣реИ рдХрд┐ рдореБрджреНрд░рдг рдбрд┐рдмрдЧрд┐рдВрдЧ рд╕рдВрджреЗрд╢реЛрдВ рдФрд░ рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдХреЗ "рд╕реЛрддреЗ рд╣реБрдП" рдкреНрд░рджрд░реНрд╢рди рдкреНрд░рдпреЛрдЬрдиреЛрдВ рдХреЗ рд▓рд┐рдП рд╣реА рдХрд┐рдП рдЧрдП рдереЗред рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддреЗ рд╕рдордп, libfcgi рдФрд░ libpthread рд▓рд╛рдЗрдмреНрд░реЗрд░реА (gcc рд╕рдВрдХрд▓рдХ рд╡рд┐рдХрд▓реНрдк: -lfcgi рдФрд░ -lpreadread) рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВред #include <pthread.h> #include <sys/types.h> #include <stdio.h> #include "fcgi_config.h" #include "fcgiapp.h" #define THREAD_COUNT 8 #define SOCKET_PATH "127.0.0.1:9000" // static int socketId; static void *doit(void *a) { int rc, i; FCGX_Request request; char *server_name; if(FCGX_InitRequest(&request, socketId, 0) != 0) { // printf("Can not init request\n"); return NULL; } printf("Request is inited\n"); for(;;) { static pthread_mutex_t accept_mutex = PTHREAD_MUTEX_INITIALIZER; // printf("Try to accept new request\n"); pthread_mutex_lock(&accept_mutex); rc = FCGX_Accept_r(&request); pthread_mutex_unlock(&accept_mutex); if(rc < 0) { // printf("Can not accept new request\n"); break; } printf("request is accepted\n"); // server_name = FCGX_GetParam("SERVER_NAME", request.envp); // HTTP- ( ) FCGX_PutS("Content-type: text/html\r\n", request.out); // FCGX_PutS("\r\n", request.out); // ( - html- -) FCGX_PutS("<html>\r\n", request.out); FCGX_PutS("<head>\r\n", request.out); FCGX_PutS("<title>FastCGI Hello! (multi-threaded C, fcgiapp library)</title>\r\n", request.out); FCGX_PutS("</head>\r\n", request.out); FCGX_PutS("<body>\r\n", request.out); FCGX_PutS("<h1>FastCGI Hello! (multi-threaded C, fcgiapp library)</h1>\r\n", request.out); FCGX_PutS("<p>Request accepted from host <i>", request.out); FCGX_PutS(server_name ? server_name : "?", request.out); FCGX_PutS("</i></p>\r\n", request.out); FCGX_PutS("</body>\r\n", request.out); FCGX_PutS("</html>\r\n", request.out); //"" - sleep(2); // FCGX_Finish_r(&request); // - , .. } return NULL; } int main(void) { int i; pthread_t id[THREAD_COUNT]; // FCGX_Init(); printf("Lib is inited\n"); // socketId = FCGX_OpenSocket(SOCKET_PATH, 20); if(socketId < 0) { // return 1; } printf("Socket is opened\n"); // for(i = 0; i < THREAD_COUNT; i++) { pthread_create(&id[i], NULL, doit, NULL); } // for(i = 0; i < THREAD_COUNT; i++) { pthread_join(id[i], NULL); } return 0; }
рд╕рд░рд▓ Nginx рд╡рд┐рдиреНрдпрд╛рд╕ рдЙрджрд╛рд╣рд░рдг
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдПрдХ рд╡рд┐рдиреНрдпрд╛рд╕ рдХрд╛ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ: рд╕рд░реНрд╡рд░ {
server_name рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ;
рд╕реНрдерд╛рди / {
fastcgi_pass 127.0.0.1:9000;
#fastcgi_pass рдпреВрдирд┐рдХреНрд╕: / tmp / fastcgi / mysocket;
#fastcgi_pass localhost: 9000;
fastcgi_params рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ;
}
}
рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдпрд╣ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╣рдорд╛рд░реЗ FastCGI рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рд╕рд╣реА рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рдЯрд┐рдкреНрдкрдгреА рдХреА рдЧрдИ рд▓рд╛рдЗрдиреЗрдВ рдХреНрд░рдорд╢рдГ рдпреВрдирд┐рдХреНрд╕ рдбреЛрдореЗрди рд╕реЙрдХреЗрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдФрд░ рдЖрдИрдкреА рдкрддреЗ рдХреЗ рдмрдЬрд╛рдп рдПрдХ рд╣реЛрд╕реНрдЯ рдбреЛрдореЗрди рдирд╛рдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВредрдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдФрд░ рдЪрд▓рд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдФрд░ рдирдЧрдиреЗрдХреНрд╕ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдкрд░, рдореБрдЭреЗ рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ рдкрд░ рдПрдХ рдЧрд░реНрд╡рд┐рдд рд╢рд┐рд▓рд╛рд▓реЗрдЦ рдорд┐рд▓рд╛:FastCGI рдирдорд╕реНрдХрд╛рд░! (рдорд▓реНрдЯреА рдереНрд░реЗрдбреЗрдб рд╕реА, fcgiapp рд▓рд╛рдЗрдмреНрд░реЗрд░реА)рдЕрдВрдд рдореЗрдВ рдкрдврд╝рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдХреЛ рдзрдиреНрдпрд╡рд╛рджред