рдореИрдВ рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рдХрд░рддрд╛ рд╣реВрдВ, рд╣реЗрдмреНрд░рд┐рдЯрд╛рдЪреЗрдЯреЗрд▓реА!
рдореИрдВ рдЖрдкрдХреЛ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдКрдВрдЧрд╛ рдЬрд┐рд╕рдиреЗ рдореЗрд░рд╛ рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛ рдФрд░ рдореИрдВрдиреЗ рдЗрд╕реЗ рдХреИрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ред
рдореИрдВ рддреБрд░рдВрдд рдПрдХ рдЖрд░рдХреНрд╖рдг рдХрд░реВрдВрдЧрд╛ - рдЬреА рдореЗрдВ рдПрдХ рдШрдВрдЯреЗ рдХреА рдЦреЛрдЬ рдФрд░ рдореИрдВ рдПрдХ рд╕рдВрддреЛрд╖рдЬрдирдХ рдкрд░рд┐рдгрд╛рдо рдирд╣реАрдВ рд▓рд╛рдпрд╛, рд▓реЗрдХрд┐рди рдЕрдЧрд▓реЗ рдШрдВрдЯреЗ рдореЗрдВ рдореЗрд░рд╛ рдЕрдкрдирд╛ рд╕рдорд╛рдзрд╛рди рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ред
рдпрд╣ рд╕рдм рдПрдХ рдкреНрд░рдпреЛрдЧ рд╕реЗ рдЕрдзрд┐рдХ рдХреБрдЫ рдирд╣реАрдВ рд╣реИ - рд╡рд┐рдЪрд╛рд░реЛрдВ рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рджреЛрдиреЛрдВ рдкрд░ рд╕рдлреЗрдж рдзрдмреНрдмреЗ рд╣реИрдВ, рдЗрд╕ рд╕реНрддрд░ рдкрд░ рдЖрдкрдХреЛ рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЬреАрдирд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред
рдХрд╛рд░реНрдп рдХрд╛ рд╕рд╛рд░ рдпрд╣ рдерд╛ рдХрд┐ рдореБрдЭреЗ рд╕рд┐рд╕реНрдЯрдо рдШрдЯрдХреЛрдВ (рд╡реЗрдм тАЛтАЛрдкреНрд░реЛрдЬреЗрдХреНрдЯ) рдХреА рдкреНрд░рдХреГрддрд┐ рдФрд░ рдзрд░реНрдо рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛ рдЖрдЧрдВрддреБрдХ рдХреА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред рдФрд░ рдЧрддрд┐ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдпрд╣ рд╕рдВрднрд╡ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд░рд▓, рдЬрд▓реНрджреА рдФрд░ рдмрдбрд╝реЗ рдУрд╡рд░рд╣реЗрдб рдХреЗ рд░реВрдк рдореЗрдВ рдХрд░рдирд╛ рд╣реИред
рдпрд╣ рдиреЛрдЯ рдХрд░рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐
рд▓реЙрдЧрд┐рди / рдкрд╛рд╕рд╡рд░реНрдб рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдпрд╛ рдЕрднреА рддрдХ рдкреНрд░рджрд░реНрд╢рди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ ред
рдПрдХ рд╡реЗрдм рд╕рд░реНрд╡рд░ рдФрд░ рдкреНрд░рд╛рдердорд┐рдХ рд▓реЛрдб рдмреИрд▓реЗрдВрд╕рд░ рдХреЗ рд░реВрдк рдореЗрдВ, рдореЗрд░реЗ рдкрд╛рд╕ Nginx рд╣реИред
Php рдХреЗ рд▓рд┐рдП рдореЗрд░реЗ рд╕рд┐рд╕реНрдЯрдо рдкрд░, рдореИрдВ fastcgi рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ php-fpm рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдФрд░ c ++ рд╡реНрдпрд╛рдкрд╛рд░ рддрд░реНрдХ рд╕рд░реНрд╡рд░ fastcgi рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдпрд╣рд╛рдБ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдЖрд░реЗрдЦ рд╣реИ:
рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ C ++ рд╕рд░реНрд╡рд░ рдЬреЛрдбрд╝реЗ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рдореИрдВ рд╡реИрд╢реНрд╡рд┐рдХ рдкрд╣рдЪрд╛рди рдХреА рд╕рдорд╕реНрдпрд╛ рдореЗрдВ рдЖрдпрд╛, рдЬреЛ рдЕрдкрдиреЗ рд▓рд┐рдП рдХреБрдЫ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдкрдХрдбрд╝рддрд╛ рд╣реИред
рдЪреВрдВрдХрд┐ рд╕рдХрд╛рд░рд╛рддреНрдордХ рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз php рдмреИрдХрдПрдВрдб рдХреЗ рдЕрдиреБрд░реЛрдз рд╕реЗ рдкрд╣рд▓реЗ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ PHPSESSID рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд╣рдЪрд╛рди рдХреА рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ, рддреЗрдЬрд╝, рдФрд░ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд░реВрдк рд╕реЗ рд╕реБрдВрджрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдЖ рд╕рдХрд╛ред
рдореИрдВрдиреЗ рдпрд╣ рд╕рдм Nginx рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдпрд╛ рдмрд▓реНрдХрд┐, рдЗрд╕рдХреЗ рдкрд░реНрд▓ рдореЙрдбреНрдпреВрд▓ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред
рдпрд╣ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЕрдм рддрдХ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЛрдг рд╣реИ - рдпрд╣ рдореЙрдбреНрдпреВрд▓ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдирд╣реАрдВ рд╣реИ, рдЕрд░реНрдерд╛рдд, рдЖрдкрдХреЛ nginx рдХрд╛ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рд╣реЛрдЧрд╛:
$ ./configure --with-http_perl_module
рдЕрдм рдпрд╣ рдХрд╛рд░реНрдп рдХрдИ рдЪрд░рдгреЛрдВ рдореЗрдВ рдиреАрдЪреЗ рдЖрддрд╛ рд╣реИ:
рдЪрд░рдг 1. рдПрдХ рдореЛрддреА рдореЙрдбреНрдпреВрд▓ рд▓рд┐рдЦреЗрдВ рдЬреЛ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдЙрддреНрдкрдиреНрди рдФрд░ рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИ
1. рдПрдХ рд╕реЗрдЯ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдХрд░реЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреБрдХреАрдЬрд╝ рдореЗрдВред
рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЛ рди рдХреЗрд╡рд▓ рдХреБрдХреАрдЬрд╝ рдореЗрдВ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рд╡рд╣рд╛рдВ рд╣реИред
2 рдПред рд╡реИрдзрддрд╛ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдХрд░реЗрдВ
рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреА рд╡реИрдзрддрд╛ рдХреА рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рддреА рд╣реИ, рдЕрд░реНрдерд╛рдд рдпрд╣ рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рддреА рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдореЙрдбреНрдпреВрд▓ рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдпрд╛ рдЗрд╕рдореЗрдВ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдЙрддреНрдкрдиреНрди рд╣реБрдИ рдереАред
рдпрд╣ рдореЗрд░реЗ рдШрдЯрдХреЛрдВ рдХреЗ рдЖрдЧреЗ рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред
рдХреНрд▓рд╛рдЗрдВрдЯ рдкрдХреНрд╖ рдкрд░ рд▓реЛрдб рдХреЛ рд╕рдВрддреБрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдХреБрдЫ рддрд░реАрдХреЗ рднреА рд╣реИрдВред
рдпрджрд┐ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдорд╛рдиреНрдп рд╣реИ, рддреЛ рд╣рдо рдкреАрдврд╝реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдкреВрд░рд╛ рдХрд░рддреЗ рд╣реИрдВред
рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдПрдХ рдирдпрд╛ (рдкреАред 2 рдмреА) рдЙрддреНрдкрдиреНрди рдХрд░реЗрдВ - рд╢рд╛рдпрдж рдпрд╣рд╛рдВ рдЖрдкрдХреЛ рдХрд┐рд╕реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рддрд░рд╣ рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрдиреА рдЪрд╛рд╣рд┐рдП, рдЖрдкрдХреЛ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред
2 рдмреАред рдЖрдИрдбреА рдЬрдирд░реЗрдЯ рдХрд░реЗрдВ
рдпрд╣рд╛рдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдбреЗрдЯрд╛ + рдХреБрдЫ рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреА рдкреАрдврд╝реА рд╣реИред
рдЕрдм рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдореЗрдВ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдЕрдиреБрдХреНрд░рдо рдХреЗ 32 рдмрд╛рдЗрдЯреНрд╕ (рд╣реЗрдХреНрд╕рд╕реНрдЯреНрд░рд╛) рдФрд░ рдбрд╛рдЗрдЬреЗрд╕реНрдЯ рдХреЗ 32 рдмрд╛рдЗрдЯреНрд╕ (рд╣реЗрдХреНрд╕рд╕реНрдЯреНрд░рд╛) рд╢рд╛рдорд┐рд▓ рд╣реИрдВ (рдиреАрдЪреЗ рджреЗрдЦреЗрдВ)ред
рдмреЗрд╢рдХ, рдпрд╣ рдХрдо рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд╣реЛрдЧрд╛ред
package session; use strict; use Digest::MD5 qw(md5_hex); my $secret_key = '__TOP_SECRET__KEEP_IT_IN_BANK__';
рдЪрд░рдг 2. рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рде рдорд┐рддреНрд░ рд╕рд┐рд╕реНрдЯрдо рдШрдЯрдХ рдмрдирд╛рдПрдВ
рдЗрд╕ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, nginx.conf рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ
http {
...
perl_modules conf / perl; # рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдЬрд╣рд╛рдВ рд╣рдорд╛рд░рд╛ рдореЙрдбреНрдпреВрд▓ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИ
perl_require session.pm; # рдореЙрдбреНрдпреВрд▓ рдлрд╝рд╛рдЗрд▓
perl_set $ sid рд╕рддреНрд░ :: рдЬреАрди; # рдЪрд░ рдЬрд┐рд╕рдореЗрдВ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛
...
рд╕рд░реНрд╡рд░ {
..
рд╕реНрдерд╛рди ~ * \ред php $ {
рд░реВрдЯ html / www;
fastcgi_pass http: // backend_upstreams;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $ document_root / $ fastcgi_script_name;
fastcgi_params рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ;
fastcgi_param SID $ рд╕рд┐рдб; # FastCGI рдЖрдИрдбреА рдмреИрдХрдПрдВрдб рдореЗрдВ рдЯреНрд░рд╛рдВрд╕рдлрд░
}
рд╕реНрдерд╛рди ~ * \ tst $ $
fastcgi_pass unix: / tmp / cpp_server;
fastcgi_params рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ;
fastcgi_param SID $ рд╕рд┐рдб; # FastCGI рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмреИрдХрдПрдВрдб рдореЗрдВ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХрд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рдг
}
}
...
}
рдЪрд░рдг 3. рд╕рддреНрдпрд╛рдкрди рдХрд┐ рд╣рдо рд╕рднреА nafig рд╡рд┐рдлрд▓ рдирд╣реАрдВ рд╣реЛрдВрдЧреЗ
рдПрдХ рдЫреЛрдЯрд╛ рднрд╛рд░ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛ред рдореИрдВрдиреЗ рдорд╛рдирдХ рдореЛрддреА рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред
600Mhz VDSke рдкрд░ рдХрд╛рдо рдХрд╛ рдкрд░рд┐рдгрд╛рдо:
рдХреБрд▓: 6 рд╡реЙрд▓рдХреЙрдХ рд╕реЗрдХрдВрдбреНрд╕ (5.75 usr + 0.30 sys = 6.05 CPU)
рдпрд╛рдиреА рдПрдХ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдореЗрдВ ~ 6 * 10
-6 рд╕реЗрдХрдВрдб рдХрд╛ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИред
рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╕рдмрд╕реЗ рдЦрд░рд╛рдм рд╡рд┐рдХрд▓реНрдк рд╕рддреНрдпрд╛рдкрди + рдкреАрдврд╝реА рдкреНрд░рддрд┐ рдЕрдиреБрд░реЛрдз = 12 * 10
-6 рд╕реЗрдХрдВрдб рд╣реИред
рдмрд╛рдХреА рдЕрдм рддрдХ рдореИрдВрдиреЗ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЬрд╣рд╛рдВ рдЦреАрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИред
рдкреАрдПрдЪрдкреА
рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП php рдмреИрдХрдПрдВрдб рд╕реЗ рдкрд╣реБрдБрдЪ - $ _SERVER ['SID'];
рдЖрдк рдЗрд╕ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЛ session_id рдХреЗ рд░реВрдк рдореЗрдВ рднреА рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
<? session_id($_SERVER['SID']); session_name('SID');
рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрджрд┐ рд╕рддреНрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдпрд╛ рдореЗрдорд╛рдЪреЗ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рддреЛ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рднреА рдШрдЯрдХреЛрдВ рдореЗрдВ рд╕рддреНрд░ рдбреЗрдЯрд╛ рддрдХ рдкрд╣реБрдВрдЪ рд╣реЛрдЧреА (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореБрдЭреЗ рд╕рддреНрд░ рд░рд┐рдХреЙрд░реНрдб рдХреЛ рд▓реЙрдХ рдХрд░рдиреЗ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рд╣реИ)ред
рдпреБрдкреАрдбреА:рдХреНрдпреЛрдВ рдирд╣реАрдВ ngx_http_userid_module
рд╕рд╣реА рд╕рд╡рд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдбреЗрдореЗрдЯреНрд░реЛ рдХрд╛ рдзрдиреНрдпрд╡рд╛рджредрдЗрд╕ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдлрд┐рдЯ рди рд╣реЛрдиреЗ рдХреЗ рджреЛ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрд╛рд░рдг рд╣реИрдВ (
рдЕрдзрд┐рдХ ):
- рдХреЛрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЖрдИрдбреА рд╕рддреНрдпрд╛рдкрди рдирд┐рдпрдВрддреНрд░рдг рдирд╣реАрдВ рд╣реИ
- рдкрд╣рд▓реЗ рдЕрдиреБрд░реЛрдз рдкрд░, рдмреИрдХрдПрдВрдб рдХреЛ рдпреВрдЖрдИрдбреА рдкрд╛рд╕ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ