PHP рдХреЛ рддреЗрдЬреА рд╕реЗ (ReactPHP рдХреЗ рд╕рд╛рде)

рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ, рдореИрдВ PHP рджреБрдирд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд╕рд╛рдорд╛рдиреНрдп рддрд░реАрдХрд╛ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛, рдПрдХ рдЖрд╡реЗрджрди рдмрдирд╛рдиреЗ рдХрд╛ рддрд░реАрдХрд╛, рдЕрдЧрд░ рдЖрдкрдХреЛ рдкрд╕рдВрдж рд╣реИ - рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ред рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг PHP рдЯреВрд▓реНрд╕ рдХреЛ рдХрдИ рдмрд╛рд░ рд╕рдВрд╕рд╛рдзрд┐рдд рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдмрдврд╝рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдореИрдВ рдЗрд╕ рджрд┐рд╢рд╛ рдореЗрдВ рдЕрдкрдиреЗ рд╕рд░реНрд╡реЛрддреНрддрдо рдЕрднреНрдпрд╛рд╕реЛрдВ рдХреЛ рднреА рд╕рд╛рдЭрд╛ рдХрд░реВрдВрдЧрд╛ред рдмреЗрд╢рдХ, рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛрдб рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рд╕реНрд╡рддрдВрддреНрд░ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдХреНрд░рдо рдореЗрдВ рдХрд░рддреЗ рд╣реИрдВред









рд╣рд╛рдВ, рдЕрдВрдд рдореЗрдВ рд╣рдореЗрдВ рдирд┐рдпрдорд┐рдд PHP рдХреА рддреБрд▓рдирд╛ рдореЗрдВ 30 рдЧреБрдирд╛ рдФрд░ PHP + OPcache рдХреА рддреБрд▓рдирд╛ рдореЗрдВ 6 рдЧреБрдирд╛ рдкреНрд░рджрд░реНрд╢рди рд╡реГрджреНрдзрд┐ рдорд┐рд▓реЗрдЧреАред рд▓реЗрдХрд┐рди рд╢реБрд░реБрдЖрдд рд╕реЗ, рдореИрдВ PHP рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдореМрдЬреВрджрд╛, рд▓реЛрдХрдкреНрд░рд┐рдп рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред



OPcache


рдЕрдзрд┐рдХрд╛рдВрд╢ рдЖрдзреБрдирд┐рдХ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди APC / OPcache рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ PHP рдХреЗ рд▓рд┐рдП рдорд╛рдирдХ рдФрд░ рдЕрдзрд┐рдХрддрдо рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рдиреБрдХрд╕рд╛рди рд╣реИрдВ, рдЬреИрд╕реЗ рдпрд╣ рдПрдХ рдореВрд▓ (рджреЗрд╢реА) рд╕рдорд╛рдзрд╛рди рд╣реИ рдЬреЛ PHP рдЯреАрдо рджреНрд╡рд╛рд░рд╛ рд╣рдореЗрдВ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдкрд░реНрдпрд╛рдкреНрдд рдЧрддрд┐ рдирд╣реАрдВред



HHVM


рдПрдЪрдПрдЪрд╡реАрдПрдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдЪреНрдЫрд╛ рд╣реИ, рд▓реЛрдХрдкреНрд░рд┐рдп рд▓рд┐рдирдХреНрд╕ рдбрд┐рд╕реНрдЯреНрд░реЛрд╕ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╣реИрдВ рдФрд░ рдЬреЛ рдХреБрдЫ рднреА рдмрд╛рдХреА рд╣реИ рд╡рд╣ рд╕реНрдерд╛рдкрд┐рдд рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рд╣реИ, рдЬреЛ рдЖрдорддреМрд░ рдкрд░ рдПрдХ рдореБрд╢реНрдХрд┐рд▓ рдЪреАрдЬ рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдлреЗрд╕рдмреБрдХ рдЯреАрдо рд╕реЗ рдПрдХ рд╡рд┐рдХрд╛рд╕ рд╣реИ рдФрд░ рдлрд┐рд▓рд╣рд╛рд▓, рдПрдЪрдПрдЪрд╡реАрдПрдо рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреА рдкрд╕рдВрдж рдХреЛ рд╕реАрдорд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЕрдЧрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЕрдЪрд╛рдирдХ рдкреАрдПрдЪрдкреА рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рдкреИрдЪ рд╣реИ, рддреЛ рдпрд╣ рдкреАрдПрдЪрдПрдЪ рд╕реЗ рдПрдЪрдПрдЪрд╡реАрдПрдо рдХреЗ рджрд░реНрдж рд░рд╣рд┐рдд рд╕рдВрдХреНрд░рдордг рдХрд╛ рдЕрдВрдд рдХрд░рддрд╛ рд╣реИред рдЖрдк PHP 5.5 рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреА рднреВрд▓ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдореБрдЦреНрдп рдЯреВрд▓ рдФрд░ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд╕рд╛рде рдПрдЪрдПрдЪрд╡реАрдПрдо рдХреА рдЕрдиреБрдХреВрд▓рддрд╛ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдлреЗрд╕рдмреБрдХ рдЯреАрдо рдХреЗ рдЙрддреНрдХреГрд╖реНрдЯ рдХрд╛рд░реНрдп рдХреЛ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЖрдВрдХрдбрд╝рд╛ рдЕрднреА рднреА рд▓рдЧрднрдЧ 97% рд╣реИред



рдореЗрд░реЗ рджрд┐рдорд╛рдЧ рдореЗрдВ рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ рд╕реЗ рдЕрднреА рднреА рдХрдЪреНрдЪреЗ рд╣рд┐рдкреНрдкреАрд╡реАрдПрдо рдФрд░ рдлрд╛рд▓реНрдХреЛрдирдХреЙрдкреА рдлреНрд░реЗрдорд╡рд░реНрдХ рд╣реИрдВред рдлрд╛рд▓реНрдХрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реА рд╕рдореАрдХреНрд╖рд╛рдПрдВ рд▓рд┐рдЦреА рдЧрдИ рд╣реИрдВ рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЙрдиреНрд╣реЗрдВ рджреЛрд╣рд░рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред HippyVM рд╡рд┐рдХрд╛рд╕ рдХреЗ рддрд╣рдд рд╣реИ, рд╡реИрд╕реЗ рдпрд╣ facebook рдЯреАрдо рд╕реЗ HHVM рдХрд╛ рдПрдХ рд╡рд┐рдХрд▓реНрдк рд╣реИ, рдЬреЛ рдЕрдЬрдЧрд░ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдФрд░ рднреА рдзреВрдорд┐рд▓ рдмрдирд╛рддрд╛ рд╣реИред



рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк рд╕реБрдЭрд╛рдПрдВред



рдХреНрд▓рд╛рд╕рд┐рдХ PHP рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдореЗрдВ Nginx, Apache рдпрд╛ Lighttpd рд╡реЗрдм рд╕рд░реНрд╡рд░реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЬреЛ рдЖрдиреЗ рд╡рд╛рд▓реЗ HTTP рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдкреНрд░реЛрд╕реЗрд╕ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЧрддрд┐рд╢реАрд▓ рд▓реЛрдЧреЛрдВ рдХреЛ PHP рдореЗрдВ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдХрд░рддрд╛ рд╣реИред PHP рдХреЛ рд╡реЗрдм рд╕рд░реНрд╡рд░ рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ:



рд╕рднреА PHP рддреНрд╡рд░рдг рд╕рдорд╛рдзрд╛рди рдЖрдо рддреМрд░ рдкрд░ рд╡реЗрдм рд╕рд░реНрд╡рд░ рд╕реЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЕрдиреБрд░реЛрдз рдХреЛ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рдХреНрд╖рдг рдореЗрдВ рдзреАрдореА PHP рджреБрднрд╛рд╖рд┐рдпрд╛ рдХреЛ рддреЗрдЬ рдХрд░рдиреЗ рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рд╕реЗ рд╣реЛрддреЗ рд╣реИрдВ, рдЬреЛ рдХрд┐ рдкреНрд░рджрд░реНрд╢рди рдкрд░реАрдХреНрд╖рдгреЛрдВ рд╕реЗ рджреЗрдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рдХрд╛ рдкрд░рд┐рдгрд╛рдо рджреЗрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдореЗрдВ рдПрдХ рдХрдореА рд╣реИ, рд╡реИрд╕реЗ рднреА, рд▓реЗрдХрд┐рди рд╣рд░ PHP рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рдЖрд╡реЗрджрди рдХреЛ рдХрдХреНрд╖рд╛рдПрдВ рдШреЛрд╖рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛, рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдХреИрд╢ рдкрдврд╝рдирд╛ рд╣реЛрдЧрд╛ - рдЕрдкрдиреЗ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдФрд░ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рд╣рдо PHP рджреБрднрд╛рд╖рд┐рдпрд╛ рдХреЛ рдХреИрд╕реЗ рддреЗрдЬ рдХрд░рддреЗ рд╣реИрдВ, рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╕рдВрд╕рд╛рдзрди рдкреВрд░реЗ рдЖрд░рдВрднреАрдХрд░рдг рдкрд░ рдЦрд░реНрдЪ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╡рд╛рдВрдЫрдиреАрдп рд╕реЗ рдмрд╣реБрдд рджреВрд░ рд╣реИ, рдЦрд╛рд╕рдХрд░ рдЕрддреНрдпрдзрд┐рдХ рд▓реЛрдб рдХрд┐рдП рдЧрдП рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдПред рдРрд╕рд╛ рдХреНрдпреЛрдВ рд╣реЛ рд░рд╣рд╛ рд╣реИ? PHP рдореВрд▓ рд░реВрдк рд╕реЗ рдПрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рднрд╛рд╖рд╛ рдФрд░ рдЯреВрд▓рдХрд┐рдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдПрдХ рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди рд╡реЗрдм рд╕рд░реНрд╡рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд▓реНрдкрдирд╛ рдирд╣реАрдВ рдХреА рдЧрдИ рдереАред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, PHP рдореЗрдВ рдиреЛрдб.рдЬреЗрдПрд╕ рдХреА рддрд░рд╣ рдХреЛрдИ рд╕рдорд╛рдирд╛рдВрддрд░ рдирд┐рд╖реНрдкрд╛рджрди рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдирд╣реАрдВ рд╣реИ, рдФрд░ рд╕рднреА рд▓рд┐рдЦрд┐рдд рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдЕрд╡рд░реБрджреНрдз рд╣реИрдВред



рд▓реЗрдХрд┐рди PHP рдЕрднреА рднреА рдЦрдбрд╝рд╛ рдирд╣реАрдВ рд╣реИред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╣рдЬрд╛рд░реЛрдВ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рд╣реИ рдЬреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рд╕рдВрдЧреАрддрдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред PHP рдиреЗ рдЬрд╛рд╡рд╛, рдЬреЗрдПрд╕ рдФрд░ рдЕрдиреНрдп рдЬреИрд╕реА рднрд╛рд╖рд╛рдУрдВ рд╕реЗ рдХрдИ рдкреИрдЯрд░реНрди рдЙрдзрд╛рд░ рд▓рд┐рдП рд╣реИрдВ, рд╕рд┐рдореНрдлрдиреА рдЯреАрдо рдХреЗ рд▓рд┐рдП рдирдорд╕реНрддреЗред рдРрд╕реЗ рдЙрдкрдХрд░рдг рд╣реИрдВ рдЬреЛ PHP рдХреЛ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣реИрдмреЗ рдкрд░ рдПрдХ рд▓реЗрдЦ рд╣реИ , рдореИрдВ рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╡рд┐рд╡рд░рдг рдореЗрдВ рдЗрд╕реЗ рдирд╣реАрдВ рджреЛрд╣рд░рд╛рдКрдВрдЧрд╛ред рдореИрдВ рдХреЗрд╡рд▓ рдпрд╣ рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣рдореЗрдВ рди рдХреЗрд╡рд▓ рд╡реЗрдмрд╕реИрдЯ рдкрд░ рдПрдХ рдЪреИрдЯ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдПрдХ рдкреВрд░реНрдг HTTP рд╕рд░реНрд╡рд░ рднреА рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП PHP рдХреЛ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдпрд╣ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╡рд┐рднрд┐рдиреНрди рд░реВрдкрд░реЗрдЦрд╛рдУрдВ рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдореЗрдВ рд▓рдЧрдиреЗ рд╡рд╛рд▓реЗ рд╕рдордп рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░ рджреЗрдЧрд╛ рдФрд░ рдЕрдВрддрддрдГ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рдордп рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░реЗрдЧрд╛ред



рд╢реАрд░реНрд╖рдХ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдпрд╣ рд╕рдорд╛рдзрд╛рди, ReactPHP рдкрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕реНрд╡рдпрдВ рдПрдХ рдЯрд░реНрдирдХреА рд╕рдорд╛рдзрд╛рди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдирд┐рд░реНрдорд╛рдг рдЙрдкрдХрд░рдг рд╣реИред рдпрджреНрдпрдкрд┐ рдЗрд╕рдХреЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЖрдиреЗ рд╡рд╛рд▓реЗ Http рдХрдиреЗрдХреНрд╢рди рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдг рд╣реИрдВ, рдЗрд╕рдХреЗ рдкрд╛рд╕ рд╡рд┐рднрд┐рдиреНрди рдЙрдкрдХрд░рдг рднреА рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡реЗрдмрд╕реНрдХреИрдЯ рдпрд╛ рдПрд╕рд┐рдВрдХреНрд╕ рд░реЗрдбрд┐рд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рдЖрдзреБрдирд┐рдХ рдПрдорд╡реАрд╕реА рд░реВрдкрд░реЗрдЦрд╛рдУрдВ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдкрд┐рддрд░, рд░рд╛рдЙрдЯрд┐рдВрдЧ рдЖрджрд┐ рдирд╣реАрдВ рд╣реИрдВред рдЗрди рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, рд╣рдо ReactPHP рдХреЛ рдПрдХ рдореМрдЬреВрджрд╛ Symfony2 рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗ рдЬреЛрдбрд╝реЗрдВрдЧреЗред



ReactPHP рдИрд╡реЗрдВрдЯрд▓реВрдк рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ рдФрд░ рдЗрд╕ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕-рд▓рд┐рдмрд╡реЗрдВрдЯ, рдПрдХреНрд╕-рд▓рд┐рдмреЗрд╡, рдПрдХреНрд╕-рдЗрд╡реЗрдВрдЯ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рд╡рд┐рдлрд▓рддрд╛ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ, React рд╕реНрдЯреНрд░реАрдо_рд╕реЗрд▓реЗрдХреНрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХреНрд╖рдорддрд╛рдУрдВ рдХреЛ рдХрдо рд╕реЗ рдХрдо рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕рдм рдХреБрдЫ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдмрд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рдмрд┐рдирд╛ рдмрджрд▓реЗ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдмреЗрд╢рдХ, рдЖрдк рдЗрд╕реЗ рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ, рдпрд╣ рдПрдХ рд╣реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рднреАрддрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрджрд┐ рдлрд╝рдВрдХреНрд╢рди рдиреЙрди-рдмреНрд▓реЙрдХрд┐рдВрдЧ рдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП async-redis, рддреЛ stream_select рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдПрдХ рдИрд╡реЗрдВрдЯрд▓реВрдк рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЧреИрд░-рдЕрд╡рд░реЛрдзрдХ рдХреЙрд▓ рдХреА рдЕрд╡рдзрд┐ рдХреЗ рд▓рд┐рдП php рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдмрд╛рдзрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред рдмреЗрд╢рдХ, рдпрд╣ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдХреЛ рддреЛрдбрд╝рдХрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рд░ рд╕реНрдкрд╖реНрдЯ рд╣реИред



рдореИрдВ рдореВрд▓ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡рдХ рд╣реВрдВ, рдФрд░ pecl рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкреВрд░реЗ рд╕рд░реНрд╡рд░ рдмреЗрдбрд╝реЗ рдореЗрдВ pecl рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдФрд░ рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдкрд░ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реЛрдВрдЧреАред рд▓реЗрдХрд┐рди PHP рдореЗрдВ PHP 5.5 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ coroutine рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИред рдирд┐рдХрд┐рдХ ( рд╣рдм рдкрд░ рдЕрдиреБрд╡рд╛рдж ) рд╕реЗ рдПрдХ рдЕрджреНрднреБрдд рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдореИрдВрдиреЗ рд╡рд░реНрдгрд┐рдд рдирд┐рдХрд┐рдХ рдХрд╛рд░реНрдп рдЕрдиреБрд╕реВрдЪрдХ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрдкрдиреЗ рдИрд╡реЗрдВрдЯрд▓реВрдк рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред рд╣рд╛рдВ, рдпрд╣ рдЖрд╕рд╛рди рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИ, рдФрд░ рдЖрджрдд рд╕реЗ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ PHP рдореЗрдВ рдирд┐рд░реНрдорд╛рдг рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреА рдкреНрд░рд╕реНрддреБрддрд┐ рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмрджрд▓рд╛рд╡ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдирд┐рд░реНрдгрдп PHP рдХрд╛ рднрд╡рд┐рд╖реНрдп рд╣реИрдВред



рд╡реИрд╕реЗ, рд╕рд┐рдореНрдлрдиреА рдХреЛ рд╕рдВрдпреЛрдЧ рд╕реЗ рдирд╣реАрдВ рдЪреБрдирд╛ рдЧрдпрд╛ рдерд╛ред рд╕рд┐рдореНрдлрдиреА рдЗрдирдХрдорд┐рдВрдЧ рд░рд┐рдХреНрд╡реЗрд╕реНрдЯ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рд╕реНрдЯреИрдХ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реЗ рд╣рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз рдХреЗ рдмрд╛рдж рдЖрд╕рд╛рдиреА рд╕реЗ рдкреАрдПрдЪрдкреА рдХреЛ рдорд╛рд░реЗ рдмрд┐рдирд╛ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓рддреА рд╣реИред рдЗрд╕ рдмреАрдЪ, рдореИрдВ рдЗрд╕ рдкреЛрд╕реНрдЯ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░ рд░рд╣рд╛ рдерд╛, рдПрдХ рд╕рдорд╛рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд╛рд▓реЗ рд╕реБрдЭрд╛рд╡ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рд┐рдореНрдлрдиреА рдЪреИрдирд▓ рдкрд░ рдЖ рд░рд╣реЗ рд╣реИрдВ ред рдФрд░ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЦреБрдж рдЗрд╕ рддрдереНрдп рдХреЛ рдирд╣реАрдВ рдЫрд┐рдкрд╛рддреЗ рд╣реИрдВ рдХрд┐ рд╕рдВрд╕реНрдХрд░рдг 2 рдХреЗ рд▓реЙрдиреНрдЪ рдХреА рд╢реБрд░реБрдЖрдд рдХреЗ рдмрд╛рдж рд╕реЗ рдЗрд╕ рддрд░рд╣ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдЙрдирдХреЗ рджрд┐рдорд╛рдЧ рдореЗрдВ рдЧрд░реНрдо рд░рд╣рд╛ рд╣реИред



рд▓реЗрдХрд┐рди рд╢рдмреНрджреЛрдВ рд╕реЗ рдХрд░реНрдореЛрдВ рдХреА рдУрд░ рдЪрд▓реЛред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдП рдЧрдП nginx, php-cli 5.5.x, рдХрдВрдкреЛрдЬрд╝рд░ рдФрд░ рдЖрдкрдХреЗ рд╕рд┐рдореНрдлрдиреА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рд╛рде рдЖрдкрдХреЗ рдкрд╕рдВрджреАрджрд╛ рд▓рд┐рдирдХреНрд╕ рд╡рд┐рддрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╣рд╛рде рдореЗрдВ рд╕рд┐рдореНрдлрдиреА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдЖрдк рд╕рд┐рдореНрдлрдиреА рд╡реЗрдмрд╕рд╛рдЗрдЯ рд╕реЗ рдПрдХ рдирдВрдЧреЗ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдЧрд╛ред рдпрджрд┐ рдЖрдк рд╕рдВрдЧреАрддрдХрд╛рд░ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдЖрдк рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рд╕рддреАрд╕ рдкрд░ рдореЗрд░реЗ рд▓реЗрдЦ рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред



рдПрдХ рдирдпрд╛ рдлрд╝реЛрд▓реНрдбрд░ рдмрдирд╛рдПрдБ, рдЕрдЧрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡рд╣рд╛рдБ рд╣реИ, рддреЛ рдЙрд╕рдХреЗ рдкрд╛рд╕ рдЬрд╛рдПрдБ:

mkdir fastapp && cd fastapp
      
      





рд╕рдВрдЧреАрддрдХрд╛рд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ:

 curl -sS https://getcomposer.org/installer | php
      
      





рд╣рдордиреЗ Symfony2.4.4 рдбрд╛рд▓рд╛:

 php composer.phar create-project symfony/framework-standard-edition symfdir/ 2.4.4 && mv symfdir/* ./ && rm -fr symfdir
      
      





рд╣рдореЗрдВ рдорд┐рд▓рддрд╛ рд╣реИ
 ls -l drwxrwxr-x 6 user user 4.0K Apr 30 11:25 app/ drwxrwxr-x 2 user user 4.0K Apr 30 11:25 bin/ drwxrwxr-x 3 user user 4.0K Mar 14 09:37 src/ drwxrwxr-x 13 user user 4.0K Apr 30 11:25 vendor/ drwxrwxr-x 3 user user 4.0K Apr 30 11:25 web/ -rw-rw-r-- 1 user user 2.0K Mar 14 09:37 composer.json -rw-rw-r-- 1 user user 56K Apr 30 11:25 composer.lock -rwxr-xr-x 1 user user 990K Apr 30 11:23 composer.phar* -rw-rw-r-- 1 user user 1.1K Mar 14 09:37 LICENSE -rw-rw-r-- 1 user user 5.7K Mar 14 09:37 README.md -rw-rw-r-- 1 user user 1.3K Mar 14 09:37 UPGRADE-2.2.md -rw-rw-r-- 1 user user 2.0K Mar 14 09:37 UPGRADE-2.3.md -rw-rw-r-- 1 user user 356 Mar 14 09:37 UPGRADE-2.4.md -rw-rw-r-- 1 user user 8.3K Mar 14 09:37 UPGRADE.md
      
      







рдЗрди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдЕрдкрдиреЗ рдХрдВрдкреЛрдЬрд░ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВред json:

 { "repositories": [ { "type": "vcs", "url": "http://github.com/Imunhatep/rephp" }, { "type": "vcs", "url": "http://github.com/Imunhatep/php-pm" } ], "minimum-stability": "dev", "prefer-stable": true, "require": { "imunhatep/php-pm": "@dev" } }
      
      





рдРрд╕рд╛ рдХреБрдЫ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП
 { "name": "symfony/framework-standard-edition", "license": "MIT", "type": "project", "description": "The \"Symfony Standard Edition\" distribution", "autoload": { "psr-0": { "": "src/" } }, "repositories": [ { "type": "vcs", "url": "http://github.com/Imunhatep/rephp" }, { "type": "vcs", "url": "http://github.com/Imunhatep/php-pm" } ], "minimum-stability": "dev", "prefer-stable": true, "require": { "php": ">=5.5.3", "symfony/symfony": "~2.4", "doctrine/orm": "~2.2,>=2.2.3", "doctrine/doctrine-bundle": "~1.2", "twig/extensions": "~1.0", "symfony/assetic-bundle": "~2.3", "symfony/swiftmailer-bundle": "~2.3", "symfony/monolog-bundle": "~2.4", "sensio/distribution-bundle": "~2.3", "sensio/framework-extra-bundle": "~3.0", "sensio/generator-bundle": "~2.3", "incenteev/composer-parameter-handler": "~2.0", "imunhatep/php-pm": "@dev" }, "scripts": { "post-install-cmd": [ "Incenteev\\ParameterHandler\\ScriptHandler::buildParameters", "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap", "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache", "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets", "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile" ], "post-update-cmd": [ "Incenteev\\ParameterHandler\\ScriptHandler::buildParameters", "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap", "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache", "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets", "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile" ] }, "config": { "bin-dir": "bin" }, "extra": { "symfony-app-dir": "app", "symfony-web-dir": "web", "incenteev-parameters": { "file": "app/config/parameters.yml" }, "branch-alias": { "dev-master": "2.4-dev" } } }
      
      







рд╣рдо рдкреИрдХреЗрдЬ рдЕрдкрдбреЗрдЯ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ:

 php composer.phar update
      
      





рд╣рдореЗрдВ рдорд┐рд▓рддрд╛ рд╣реИ
 Loading composer repositories with package information Updating dependencies (including require-dev) - Installing stack/builder (v1.0.1) Loading from cache - Installing react/promise (v2.0.0) Loading from cache - Installing guzzle/parser (v3.9.0) Loading from cache - Installing evenement/evenement (v2.0.0) Loading from cache - Installing react/react (v0.4.1) Loading from cache - Installing imunhatep/rephp (dev-master 13adf26) Cloning 13adf2697681a5954978ac56fe2c8fdf6a21dc4a - Installing imunhatep/php-pm (dev-master 02f44ec) Cloning 02f44ecb41ca5b4c81d4bb6087da7a0ed4964656 react/react suggests installing ext-libevent (Allows for use of a more performant event-loop implementation.) react/react suggests installing ext-libev (Allows for use of a more performant event-loop implementation.) react/react suggests installing ext-event (Allows for use of a more performant event-loop implementation.) Writing lock file Generating autoload files Updating the "app/config/parameters.yml" file Clearing the cache for the dev environment with debug true Installing assets using the hard copy option Installing assets for Symfony\Bundle\FrameworkBundle into web/bundles/framework Installing assets for Acme\DemoBundle into web/bundles/acmedemo Installing assets for Sensio\Bundle\DistributionBundle into web/bundles/sensiodistribution
      
      







рд╕рд┐рдореНрдлрдиреА рдХреИрд╢ рддреИрдпрд╛рд░ рдХрд░рдирд╛:

 php app/console cache:warmup --env=dev
      
      





рдФрд░ рд╣рдо рд╡реЗрдм рд╕рд░реНрд╡рд░ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рдЬрдмрдХрд┐ рдХреЗрд╡рд▓ PHP рдХрд╛ рдорддрд▓рдм рд╣реИ рдФрд░ рдПрдХ рдХреЙрдкреА рдореЗрдВ, рдмреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВред рдкреЛрд░реНрдЯ рдХреЛ рд╕реНрд╡рд╛рдж рдХреЗ рд▓рд┐рдП рдЪреБрдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

 php bin/ppm start --workers 1 --port 8080
      
      





рд╣рдо рдЬрд╛рдБрдЪрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХреЗ рдкрд╕рдВрджреАрджрд╛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ: 8080 рдЦреЛрд▓рдХрд░ рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд╕рд┐рдореНрдлрдиреА рд╕реЗ рдПрдХ рд╕реНрд╡рд╛рдЧрдд рдпреЛрдЧреНрдп рдкреГрд╖реНрда рдЦреБрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЪрд┐рддреНрд░ рдирд╣реАрдВ рджрд┐рдЦреЗрдВрдЧреЗ рдФрд░ рд╕реАрдПрд╕рдПрд╕ рд▓реЛрдб рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдореЗрдВ рдПрдХ PHP рд╡реЗрдм рд╕рд░реНрд╡рд░ рдорд┐рд▓рд╛ рд╣реИ рдЬреЛ рдЖрдиреЗ рд╡рд╛рд▓реЗ HTTP рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдорд░рддрд╛ рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреЗрд╡рд▓ 1 рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИ, рдХреЛрдИ рд╕реНрдЯреИрдЯрд┐рдХреНрд╕ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдирд╣реАрдВ рд╣реИ рдФрд░ рдХреЛрдИ рдмреИрд▓реЗрдВрд╕рд░ рдирд╣реАрдВ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдХрдИ рд▓реЛрдЧреЛрдВ рдиреЗ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдпрд╛ рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ nginx рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред





рд╣рдо рдЕрдкрдиреЗ PHP рд╕рд░реНрд╡рд░ рдкрд░ рдкреНрд░реЙрдХреНрд╕реА рдбрд╛рдпрдиреЗрдорд┐рдХ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП nginx рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддреЗ рд╣реИрдВ, рд╕рд╛рде рд╣реА рд╕рд╛рде рдПрдХ рдмреИрд▓реЗрдВрд╕рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ PHP рдХреЗ рдмрд┐рдирд╛ рд╕реНрдЯреИрдЯрд┐рдХреНрд╕ рджреЗрддреЗ рд╣реИрдВ:

 upstream backend { server 127.0.0.1:5501; server 127.0.0.1:5502; server 127.0.0.1:5503; server 127.0.0.1:5504; server 127.0.0.1:5505; server 127.0.0.1:5506; server 127.0.0.1:5507; server 127.0.0.1:5508; } server { root /path/to/symfony/web/; server_name fastapp.com; location / { # try to serve file directly, fallback to rewrite try_files $uri @rewriteapp; } location @rewriteapp { if (!-f $request_filename) { proxy_pass http://backend; break; } } }
      
      





рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, server_name (fastapp.com) рдХреЛ / etc / рдореЗрдЬрдмрд╛рди рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:

 127.0.0.1 fastapp.com
      
      





рдЕрдм, рддрд╛рдХрд┐ рд╣рдорд╛рд░реЗ PHP рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдПрди-рд╕рдВрдЦреНрдпрд╛ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд░реЗрд╢рд╛рди рди рд╣реЛрдВ (рдкреНрд░рд╕реНрддреБрдд рдирдЧрдиреЗрдХреНрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди n = 8 рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ), рд╣рдорд╛рд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЬрд╛рдПрдВ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ:

 cp vendor/imunhatep/rephp/ppm.json ./
      
      





рд╣рдо ./ppm.json рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рд╣реА рдХрд░рддреЗ рд╣реИрдВ:

 { "bootstrap": "\\PHPPM\\Bootstraps\\Symfony", "bridge": "HttpKernel", "appenv": "dev", "workers": 8, "port": 5501 }
      
      





рдХрднреА-рдХрднреА рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдмрд╛рдж рдЖрдкрдХреЛ рдХреИрд╢ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рд╢рд╛рдпрдж рдпрд╣ рдХреЗрд╡рд▓ рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рд▓реЗрдЦ рд▓рд┐рдЦрддреЗ рд╕рдордп, рдХреЛрдб рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд┐рдП:

 app/console cache:warmup --env=dev
      
      





рд╣рдорд╛рд░реЗ PHP рдкреНрд░реЛрд╕реЗрд╕ рдореИрдиреЗрдЬрд░ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ:

 php bin/ppm start
      
      





рд╣рдореЗрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдорд┐рд▓ рд░рд╣реА рд╣реИ:

 8 slaves (5501, 5502, 5503, 5504, 5505, 5506, 5507, 5508) up and ready.
      
      





рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ: 5501 рд▓рд┐рдВрдХ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ, рдЕрдЧрд░ рд╕рдм рдХреБрдЫ рдЦреБрд▓рддрд╛ рд╣реИ, рддреЛ fastapp.com рдЦреЛрд▓рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рдЪрд┐рддреНрд░реЛрдВ рдФрд░ рд╕реАрдПрд╕рдПрд╕ рдХреЗ рд╕рд╛рде рд╕рдм рдХреБрдЫ рдЦреЛрд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред



рдЕрдм рдЖрдк рдШреЗрд░рд╛рдмрдВрджреА рдпрд╛ рдПрдм рдЯреВрд▓ рд╕реЗ рдЬрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдЪреБрдирдиреЗ рдХреЗ рд▓рд┐рдП:

 siege -qb -t 30S -c 128 http://fastapp.com/
      
      





рдПрдПрдордбреА 8рдХреЛрд░, 8 рдЖрд░рдПрдПрдо рдФрд░ рдлреЗрдбреЛрд░рд╛ 20 рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд┐рдХрд╛рд╕ рдорд╢реАрди рдкрд░ рдореЗрд░реА (рд╣реЗрд▓реЛрд╡рд░реНрд▓реНрдб рдирд╣реАрдВ) рд╕рд┐рдореНрдлрдиреА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдХреБрдЫ рдкрд░рд┐рдгрд╛рдо рдпрд╣рд╛рдВ рджрд┐рдП рдЧрдП рд╣реИрдВред

Php 5.5.10, nginx + php-fpm рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ:


 siege -qb -t 30S -c 128 http://login.dev/signup Lifting the server siege... done. Transactions: 983 hits Availability: 100.00 % Elapsed time: 29.03 secs Data transferred: 4.57 MB Response time: 0.91 secs Transaction rate: 34.26 trans/sec Throughput: 0.16 MB/sec Concurrency: 124.23 Successful transactions: 983 Failed transactions: 0 Longest transaction: 1.81 Shortest transaction: 0.42
      
      





рдУрдПрдирдЬреАрд╕реА рдХреЗ рд╕рд╛рде php 5.5.10, nginx + php-fpm рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдХреНрд╖рдо:


 siege -qb -t 30S -c 128 http://login.dev/signup Lifting the server siege... done. Transactions: 5298 hits Availability: 100.00 % Elapsed time: 29.54 secs Data transferred: 24.15 MB Response time: 0.70 secs Transaction rate: 179.35 trans/sec Throughput: 0.82 MB/sec Concurrency: 126.43 Successful transactions: 5298 Failed transactions: 0 Longest transaction: 1.68 Shortest transaction: 0.07
      
      





рдУрдПрдирдЬреАрд╕реА рдХреЗ рд╕рд╛рде php 5.5.10, nginx + ReactPHP + Coroutine eventloop рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдХреНрд╖рдо:


 siege -qb -t 30S -c 128 http://fastlogin.dev/signup Lifting the server siege... done. Transactions: 30553 hits Availability: 100.00 % Elapsed time: 29.85 secs Data transferred: 157.63 MB Response time: 0.12 secs Transaction rate: 1023.55 trans/sec Throughput: 5.28 MB/sec Concurrency: 127.43 Successful transactions: 30553 Failed transactions: 0 Longest transaction: 0.76 Shortest transaction: 0.00
      
      





рд╣рдо рд╕рдорд╡рд░реНрддреА рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ 256 рддрдХ рдмрдврд╝рд╛рддреЗ рд╣реИрдВред

рдУрдПрдирдЬреАрд╕реА рдХреЗ рд╕рд╛рде рдПрдирдкреАрдПрдХреНрд╕ + рдкреАрдПрдЪрдкреА-рдПрдлрдкреАрдПрдо рдХреЗ рд╕рд╛рде рдкреАрдПрдЪрдкреА рел.рел.резреж рд╕рдХреНрд╖рдо


 siege -qb -t 30S -c 256 http://login.dev/signup siege aborted due to excessive socket failure; Transactions: 134 hits Availability: 10.48 % Elapsed time: 1.58 secs Data transferred: 0.78 MB Response time: 1.21 secs Transaction rate: 84.81 trans/sec Throughput: 0.49 MB/sec Concurrency: 102.93 Successful transactions: 134 Failed transactions: 1145 Longest transaction: 1.56 Shortest transaction: 0.00
      
      





рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ php-fpm рдЧрд┐рд░ рдЧрдпрд╛ рдФрд░ 256 рд╕рдорд╡рд░реНрддреА рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдЦрд┐рд▓рд╛рдл 32 рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рд╕реАрдорд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛ред

рд╣рдо Php5.5.10 + ReactPHP + Coroutine Eventloop рдЖрдЬрд╝рдорд╛рддреЗ рд╣реИрдВ


 siege -qb -t 30S -c 256 http://fastlogin.dev/signup Lifting the server siege... done. Transactions: 29154 hits Availability: 100.00 % Elapsed time: 29.16 secs Data transferred: 150.40 MB Response time: 0.25 secs Transaction rate: 999.79 trans/sec Throughput: 5.16 MB/sec Concurrency: 252.70 Successful transactions: 29154 Failed transactions: 0 Longest transaction: 3.66 Shortest transaction: 0.00
      
      





рдирд┐рд╖реНрдХрд░реНрд╖ред



ReactPHP рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рд┐рдореНрдлрдиреА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЪрд▓рд╛рдиреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдореЗрд░рд╛ рдирд╣реАрдВ рд╣реИ, рдореИрдВрдиреЗ рдЙрдирдХреЗ рд▓реЗрдЦ рд╕реЗ рдорд╛рд░реНрдХ рд╕реЗ рдЙрдзрд╛рд░ рд▓рд┐рдпрд╛, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред рд╡реИрд╕реЗ, рдЙрдиреНрд╣реЛрдВрдиреЗ рдЕрдкрдиреЗ рдорд╛рдк рд▓рд┐рдП рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдПрдЪрдПрдЪрд╡реАрдПрдо рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХреАред рдиреАрдЪреЗ рдЙрдирдХреЗ рд▓реЗрдЦ рд╕реЗ рдПрдХ рдЪрд╛рд░реНрдЯ рд╣реИ:



рдореЗрд░рд╛ рдпреЛрдЧрджрд╛рди nikic рдХреЗ рдХрд╛рдо рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рдИрд╡реЗрдВрдЯрд▓реВрдк рдмрдирд╛рдиреЗ рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ, рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХрддрд╛ рдореЗрдВ, рдФрд░ рд╕рд╛рде рд╣реА рдирдП рдИрд╡реЗрдВрдЯрд▓реВрдк рдХреЗ рд╕рд╛рде ReactPHP рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреА рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкреНрд░рдмрдВрдзрдХ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИред рд╢рд╛рдпрдж pecl рдШрдЯрдирд╛ рдХреЗ рд╕рд╛рде, рдпрд╣ рд╕рдм рддреЗрдЬреА рд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рдЬрд╛рдБрдЪ рдирд╣реАрдВ рдХреАред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдореЗрд░реА рд╡рд░реНрддрдорд╛рди рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рдХреЛрдб рдХреА рдЖрд╡рд╢реНрдпрдХ рдЧреБрдгрд╡рддреНрддрд╛ рдХреЗ рдЕрдиреБрд░реВрдк рдирд╣реАрдВ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рдордп "рдкреНрд░рдпреЛрдЧрд╢рд╛рд▓рд╛" рдХреА рдЕрд▓рдорд╛рд░рд┐рдпреЛрдВ рдкрд░ рдзреВрд▓ рдЬрдорд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдореЗрдВ рддреНрд░реБрдЯрд┐-рдореБрдХреНрдд рдХреЛрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣реА рд╣реИ, PHP, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЧрд┐рд░рдиреЗ рдХрд╛ рдХреЛрдИ рдЕрдзрд┐рдХрд╛рд░ рдирд╣реАрдВ рд╣реИ, рдФрд░ рд╕рд░реНрд╡рд╛рд╣рд╛рд░реА рдФрд░ рдЧрддрд┐рд╢реАрд▓ PHP рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдЗрд╕рдореЗрдВ рдпреЛрдЧрджрд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдкреАрдПрдо рдкреАрдПрдо рдХреЛ рдЬреЛрдбрд╝рдХрд░ рдЧрд┐рд░рддреА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддрдп рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдЖрдк рдХреЛрдб рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреА рдЯреНрд░реИрдХрд┐рдВрдЧ рднреА рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рднреА рдкреБрдирд░рд╛рд░рдВрдн рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЕрднреА рддрдХ рдорд╛рдВрдЧ рдореЗрдВ рдирд╣реАрдВ рд╣реИред рдЗрд╕ рдЖрдзрд╛рд░ рдкрд░ рд╡реЗрдмрд╕реЛрдХреЗрдЯ рд╕рд░реНрд╡рд░ рднреА рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдХреНрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд╣реАрдВ рд░рд╣рд╛ред



рдЙрд╕рдиреЗ рдкреВрд░реЗ рд╕рдкреНрддрд╛рд╣рд╛рдВрдд рдХреЗ рд▓рд┐рдП рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕рд░реНрд╡рд░ рдХреЛ рд▓реЛрдб рдХреЗ рддрд╣рдд рдЫреЛрдбрд╝ рджрд┐рдпрд╛, рдХреЛрдИ рдореЗрдореЛрд░реА рд▓реАрдХ рдирд╣реАрдВ рдереЗред рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ рдХрд┐ рди рддреЛ рд╕рдордп рд╣реИ рдФрд░ рди рд╣реА рджреЗрдЦрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ: рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ, рд▓реЛрдб рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, 1-2 рдХрдиреЗрдХреНрд╢рди рдмрдВрдж рдирд╣реАрдВ рд░рд╣рддреЗ рд╣реИрдВред рдЫреЛрдЯреЗ рднрд╛рд░ рдкрд░, рдХрд╛рд░рдг рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдмрдбрд╝реЗ рднрд╛рд░ рдХреЗ рд▓рд┐рдП рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рдмрд┐рддрд╛рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рдХрд╛рд░рдг рдХреА рдкрд╣рдЪрд╛рди рдХреИрд╕реЗ рдХрд░реЗрдВред рдЕрдм рддрдХ, рдореИрдВрдиреЗ рдПрдХ рдЯрд╛рдЗрдорд░ рдЬреЛрдбрд╝рд╛ рд╣реИ, рдЬреЛ рд╣рд░ 10 рд╕реЗрдХрдВрдб рдореЗрдВ рд╡реИрдзрддрд╛ (рд╕рдВрд╕рд╛рдзрди, рд╕рдВрд╕рд╛рдзрди рдирд╣реАрдВ) рдХреЗ рд▓рд┐рдП рд╡рд░реНрддрдорд╛рди рдХрдиреЗрдХреНрд╢рди рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдореГрддрдХреЛрдВ рдХреЛ рдорд╛рд░рддрд╛ рд╣реИред



рдпрд╣ рднреА рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдЖрд╡реЗрджрди, рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ, рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдФрд░ рд░реБрдХрд╛рд╡рдЯ (рдЙрдкрдЬ) рдХреА рдирдИ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдПрдХ рдЯреБрдХрдбрд╝реЗ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЧреИрд░-рдЕрд╡рд░реБрджреНрдз рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рднреА рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред



All Articles