рдкреНрд░реАрд▓реЛрдбрд┐рдВрдЧ (PHP 7.4) рдФрд░ рд░реЛрдбрд░рдирд░ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИ



рдирдорд╕реНрдХрд╛рд░, рд╣реЗрдмреНрд░!

рд╣рдо рдЕрдХреНрд╕рд░ PHP рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдФрд░ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВ: рд╣рдо рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдЗрд╕рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддреЗ рд╣реИрдВ , рдХреИрд╕реЗ рд╣рдордиреЗ PHP 7.0 рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рддреЗ рд╕рдордп $ 1 рдорд┐рд▓рд┐рдпрди рдмрдЪрд╛рдП , рдФрд░ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рд╡рд┐рднрд┐рдиреНрди рд╕рд╛рдордЧреНрд░рд┐рдпреЛрдВ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рднреА рдХрд┐рдпрд╛ред рдпрд╣ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдЙрддреНрдкрд╛рджреЛрдВ рдХреЗ рджрд░реНрд╢рдХ рдмрдврд╝ рд░рд╣реЗ рд╣реИрдВ, рдФрд░ рд▓реЛрд╣реЗ рдХреЗ рд╕рд╛рде PHP рдмреИрдХреЗрдВрдб рдХрд╛ рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдмрд╣реБрдд рдорд╣рдВрдЧрд╛ рд╣реИ - рд╣рдорд╛рд░реЗ рдкрд╛рд╕ PHP-FPM рдХреЗ рд╕рд╛рде 600 рд╕рд░реНрд╡рд░ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдЕрдиреБрдХреВрд▓рди рдореЗрдВ рд╕рдордп рдХрд╛ рдирд┐рд╡реЗрд╢ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдлрд╛рдпрджреЗрдордВрдж рд╣реИред

рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ, рд╣рдордиреЗ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдЙрддреНрдкрд╛рджрдХрддрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рддрд░реАрдХреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХреАред рд▓реЗрдХрд┐рди PHP рд╕рдореБрджрд╛рдп рдЕрд▓рд░реНрдЯ рдкрд░ рд╣реИ! JIT PHP 8 рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛, PHP 7.4 рдореЗрдВ рдкреНрд░реАрд▓реЛрдб рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛, рдФрд░ PHP рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рдореВрд▓ рдХреЗ рдмрд╛рд╣рд░ рдЪреМрдЦрдЯреЗ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗ, рдЬреЛ рдпрд╣ рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ PHP рдПрдХ рдбреЗрдорди рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдХреБрдЫ рдирдпрд╛ рдкреНрд░рдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдпрд╣ рд╣рдореЗрдВ рдХреНрдпрд╛ рджреЗ рд╕рдХрддрд╛ рд╣реИред

рдЪреВрдВрдХрд┐ PHP 8 рдХреА рд░рд┐рд╣рд╛рдИ рдЕрднреА рднреА рдПрдХ рд▓рдВрдмрд╛ рд░рд╛рд╕реНрддрд╛ рддрдп рдХрд░ рд░рд╣реА рд╣реИ, рдФрд░ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд░реВрдкрд░реЗрдЦрд╛рдПрдВ рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЦрд░рд╛рдм рд░реВрдк рд╕реЗ рдЕрдиреБрдХреВрд▓ рд╣реИрдВ (рдХреНрдпреЛрдВ - рдореИрдВ рдиреАрдЪреЗ рдмрддрд╛рдКрдВрдЧрд╛), рдЖрдЬ рд╣рдо рдкреНрд░реАрд▓реЛрдб рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реЗрдВрдЧреЗ, рдЬреЛ PHP 7.4 рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛, рдФрд░ PHP, RoadRunner рдХреЗ рд▓рд┐рдП рд░реВрдкрд░реЗрдЦрд╛ред

рдпрд╣ рдореЗрд░реА рд░рд┐рдкреЛрд░реНрдЯ рдХрд╛ рдкрд╛рда рд╕рдВрд╕реНрдХрд░рдг рд╣реИ, рдЬрд┐рд╕рдореЗрдВ PHP PHP Meetup # 3 рд╣реИ ред рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдПрдХрддреНрд░ рдХрд┐рдП рдЧрдП рд╕рднреА рднрд╛рд╖рдгреЛрдВ рдХрд╛ рд╡реАрдбрд┐рдпреЛред

PHP-FPM, Apache mod_php, рдФрд░ PHP рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реА рддрд░рд╣ рдХреЗ рддрд░реАрдХреЗ (рдЬреЛ рдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рд╛рдЗрдЯреЛрдВ рдФрд░ рд╕реЗрд╡рд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рдЪрд▓рд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ; рд╕рд╛рджрдЧреА рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЙрдиреНрд╣реЗрдВ "рдХреНрд▓рд╛рд╕рд┐рдХ" PHP рдХрд╣реВрдБрдЧрд╛) рд╢рдмреНрдж рдХреЗ рд╡реНрдпрд╛рдкрдХ рдЕрд░реНрдереЛрдВ рдореЗрдВ рд╕рд╛рдЭрд╛-рдХреБрдЫ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ:

  • PHP рд╢реНрд░рдорд┐рдХреЛрдВ рдХреЗ рдмреАрдЪ рд░рд╛рдЬреНрдп рдХреЛ рдЕрдлрд╡рд╛рд╣ рдирд╣реАрдВ рд╣реИ;
  • рд░рд╛рдЬреНрдп рд╡рд┐рднрд┐рдиреНрди рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдмреАрдЪ рд░рдореНрдорд╛ рдирд╣реАрдВ рд╣реИред

рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рдЗрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:

//  $app = \App::init(); $storage = $app->getCitiesStorage(); //   $name = $storage->getById($_COOKIE['city_id']); echo " : {$name}"; 

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

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

 //  $app = \App::init(); $storage = $app->getCitiesStorage(); $cities = $storage->getAll(); //    while ($req = getNextRequest()) {    $name = $cities[$req->getCookie('city_id')];    echo " : {$name}"; } 

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

рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ "рдХреНрд▓рд╛рд╕рд┐рдХ" рдкреАрдПрдЪрдкреА рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрд╛рдлреА рдЕрдзрд┐рдХ рд╣реИред рд▓реЗрдХрд┐рди рдЖрдорддреМрд░ рдкрд░ рдЙрддреНрдкрд╛рджрдХрддрд╛ рдореЗрдВ рд╡реГрджреНрдзрд┐ рдореБрдлреНрдд рдореЗрдВ рдирд╣реАрдВ рджреА рдЬрд╛рддреА рд╣реИ - рдЖрдкрдХреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдХреАрдордд рдЪреБрдХрд╛рдиреА рд╣реЛрдЧреАред рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдпрд╣ рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдХреНрдпрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рд╣рдорд╛рд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдереЛрдбрд╝рд╛ рдЬрдЯрд┐рд▓ рдХрд░реЗрдВ рдФрд░ $name рдЪрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рд╣рдо рд╕рд░рдгреА рдХреЛ рдкреЙрдкреНрдпреБрд▓реЗрдЯ рдХрд░реЗрдВрдЧреЗ:

 -  $name = $cities[$req->getCookie('city_id')]; +  $names[] = $cities[$req->getCookie('city_id')]; 

"рдХреНрд▓рд╛рд╕рд┐рдХ" PHP рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рд╣реЛрдЧреА - рдХреНрд╡реЗрд░реА рдХреЗ рдЕрдВрдд рдореЗрдВ, $name рдЪрд░ рдирд╖реНрдЯ рд╣реЛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдмрд╛рдж рдХрд╛ рдЕрдиреБрд░реЛрдз рдЕрдкреЗрдХреНрд╖рд╛ рдХреЗ рдЕрдиреБрд░реВрдк рдХрд╛рдо рдХрд░реЗрдЧрд╛ред PHP рдХреЛ рдбреЗрдореЙрди рдХреЗ рд░реВрдк рдореЗрдВ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз рдЗрд╕ рдЪрд░ рдореЗрдВ рдПрдХ рдФрд░ рд╢рд╣рд░ рдЬреЛрдбрд╝ рджреЗрдЧрд╛, рдЬрд┐рд╕рд╕реЗ рдореЗрдореЛрд░реА рдкрд░ рдорд╢реАрди рдХреЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рддрдХ рд╕рд░рдгреА рдХрд╛ рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд рд╡рд┐рдХрд╛рд╕ рд╣реЛрдЧрд╛ред

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рди рдХреЗрд╡рд▓ рд╕реНрдореГрддрд┐ рд╕рдорд╛рдкреНрдд рд╣реЛ рд╕рдХрддреА рд╣реИ - рдХреБрдЫ рдЕрдиреНрдп рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ рдЬреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рдореГрддреНрдпреБ рдХрд╛ рдХрд╛рд░рдг рдмрдиреЗрдВрдЧреАред рдРрд╕реА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рд╕рд╛рде, "рдХреНрд▓рд╛рд╕рд┐рдХ" PHP рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕рдВрднрд╛рд▓рддреА рд╣реИред PHP рдХреЛ рдбреЗрдореЙрди рдХреЗ рд░реВрдк рдореЗрдВ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдореЗрдВ рдХрд┐рд╕реА рддрд░рд╣ рдЗрд╕ рдбреЗрдореЙрди рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЕрдЧрд░ рдпрд╣ рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдЗрд╕реЗ рдкреБрдирдГ рдЖрд░рдВрдн рдХрд░реЗрдВред

рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдЕрдкреНрд░рд┐рдп рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрдирдХреЗ рд▓рд┐рдП рдкреНрд░рднрд╛рд╡реА рд╕рдорд╛рдзрд╛рди рд╣реИрдВред рдпрд╣ рдмрд╣реБрдд рдмреБрд░рд╛ рд╣реИ рдЕрдЧрд░, рдПрдХ рддреНрд░реБрдЯрд┐ рдХреЗ рдХрд╛рд░рдг, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд╣реАрдВ рдЧрд┐рд░рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд░реВрдк рд╕реЗ рдХреБрдЫ рдЪрд░ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдмрджрд▓ рджреЗрддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ $cities рд╕рд░рдгреА рдХреЛ рд╕рд╛рдл рдХрд░рддрд╛ рд╣реИ)ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдмрд╛рдж рдХреЗ рд╕рднреА рдЕрдиреБрд░реЛрдз рдЧрд▓рдд рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВрдЧреЗред

рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, "рдХреНрд▓рд╛рд╕рд┐рдХ" PHP (PHP-FPM, Apache mod_php рдФрд░ рдЗрд╕ рддрд░рд╣) рдХреЗ рд▓рд┐рдП рдХреЛрдб рд▓рд┐рдЦрдирд╛ рдЖрд╕рд╛рди рд╣реИ - рдпрд╣ рд╣рдореЗрдВ рдХрдИ рд╕рдорд╕реНрдпрд╛рдУрдВ рдФрд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ рд╕реЗ рдореБрдХреНрдд рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдо рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд╕рд╛рде рднреБрдЧрддрд╛рди рдХрд░рддреЗ рд╣реИрдВред

рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдгреЛрдВ рд╕реЗ, рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдХреЛрдб рдХреЗ рдХреБрдЫ рд╣рд┐рд╕реНрд╕реЛрдВ рдореЗрдВ, PHP рдЙрди рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдЦрд░реНрдЪ рдХрд░рддрд╛ рд╣реИ рдЬреЛ "рдХреНрд▓рд╛рд╕рд┐рдХ" рдПрдХ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдЦрд░реНрдЪ рдирд╣реАрдВ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рдереЗ (рдпрд╛ рдПрдХ рдмрд╛рд░ рдмрд░реНрдмрд╛рдж рд╣реЛ рдЧрдП рдереЗ)ред рдпреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреНрд╖реЗрддреНрд░ рд╣реИрдВ:

  • рдлрд╝рд╛рдЗрд▓ рдХрдиреЗрдХреНрд╢рди (рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ, рдЖрд╡рд╢реНрдпрдХрддрд╛, рдЖрджрд┐);
  • рдЖрд░рдВрднреАрдХрд░рдг (рдврд╛рдВрдЪрд╛, рдкреБрд╕реНрддрдХрд╛рд▓рдп, рдбреАрдЖрдИ рдХрдВрдЯреЗрдирд░, рдЖрджрд┐);
  • рдмрд╛рд╣реНрдп рд╕рдВрдЧреНрд░рд╣рдг (рд╕реНрдореГрддрд┐ рдореЗрдВ рднрдВрдбрд╛рд░рдг рдХреЗ рдмрдЬрд╛рдп) рд╕реЗ рдбреЗрдЯрд╛ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░реЗрдВред

PHP рдХрдИ рд╕рд╛рд▓реЛрдВ рд╕реЗ рд╣реИ рдФрд░ рдХрд╛рдо рдХреЗ рдЗрд╕ рдореЙрдбрд▓ рдХреА рдмрджреМрд▓рдд рд▓реЛрдХрдкреНрд░рд┐рдп рднреА рд╣реЛ рд╕рдХрддреА рд╣реИред рдЗрд╕ рд╕рдордп рдХреЗ рджреМрд░рд╛рди, рд╡рд░реНрдгрд┐рдд рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдлрд▓рддрд╛ рдХреА рдмрджрд▓рддреА рдбрд┐рдЧреНрд░реА рдХреЗ рдХрдИ рддрд░реАрдХреЗ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдП рдЧрдП рдереЗред рдореИрдВрдиреЗ рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдЕрдкрдиреЗ рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рдХрд┐рдпрд╛ рдерд╛ ред рдЖрдЬ рд╣рдо рд╕рдореБрджрд╛рдп рдХреЗ рд▓рд┐рдП рджреЛ рдирдП рд╕рдорд╛рдзрд╛рдиреЛрдВ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реЗрдВрдЧреЗ: рдкреНрд░реАрд▓реЛрдб рдФрд░ рд░реЛрдбрд░рдирд░ред

рдкреНрд░реАрд▓реЛрдб


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



OPcache рдХреЗ рдмрд╛рд╡рдЬреВрдж, рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ persistent_compile_file рдХреНрд╡реЗрд░реА рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рдХрд╛ 5.84% рд▓реЗрддрд╛ рд╣реИред

рдРрд╕рд╛ рдХреНрдпреЛрдВ рд╣реЛрддрд╛ рд╣реИ рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо zend_accel_load_script рдХреЗ рд╕реНрд░реЛрддреЛрдВ рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ ред рдпрд╣ рдЙрди рд▓реЛрдЧреЛрдВ рд╕реЗ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, include/require рд▓рд┐рдП рдкреНрд░рддреНрдпреЗрдХ рдХреЙрд▓ рдХреЗ рд╕рд╛рде рдУрдкрдЪреЗ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рдмрд╛рд╡рдЬреВрдж include/require рдХрдХреНрд╖рд╛рдУрдВ рдФрд░ рдХрд╛рд░реНрдпреЛрдВ include/require рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╕рд╛рдЭрд╛ рдореЗрдореЛрд░реА рд╕реЗ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рдореЗрдореЛрд░реА рдореЗрдВ рдХреЙрдкреА рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рд╡рд┐рднрд┐рдиреНрди рд╕рд╣рд╛рдпрдХ рдХрд╛рд░реНрдп рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдФрд░ рдпрд╣ рдХрд╛рдо рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХреЗ рдЕрдВрдд рдореЗрдВ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рд╕реНрдореГрддрд┐ рдХреЛ рд╕рд╛рдл рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред



рдЗрд╕рдореЗрдВ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╢рд╛рдорд┐рд▓ / рдХреЙрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдЖрдорддреМрд░ рдкрд░ рдПрдХ рдЕрдиреБрд░реЛрдз рдореЗрдВ рдмрдирд╛рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рд┐рдореНрдлрдиреА 4 рдореЗрдВ рдХреЛрдб рдХреА рдкрд╣рд▓реА рдЙрдкрдпреЛрдЧреА рд▓рд╛рдЗрди рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд▓рдЧрднрдЧ 310 рдлрд╛рдЗрд▓реЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдХрднреА-рдХрднреА рдпрд╣ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд░реВрдк рд╕реЗ рд╣реЛрддрд╛ рд╣реИ: рдХрдХреНрд╖рд╛ рдП рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдиреАрдЪреЗ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдкреАрдПрдЪрдкреА рдЕрдиреНрдп рд╕рднреА рд╡рд░реНрдЧреЛрдВ (рдмреА, рд╕реА, рдбреА, рдИ, рдПрдл, рдЬреА) рдХреЛ рдСрдЯреЛрд▓реЙрдб рдХрд░реЗрдЧрд╛ред рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЗрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ, рдХрд╛рд░реНрдп рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрдЧреАрддрдХрд╛рд░ рдХреА рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рдмрд╛рд╣рд░ рд╣реИрдВ: рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдпреЗ рдлрд╝рдВрдХреНрд╢рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛрдб рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди рдЙрдкрд▓рдмреНрдз рд╣реЛрдВрдЧреЗ, рд╕рдВрдЧреАрддрдХрд╛рд░ рдХреЛ рд╣рдореЗрд╢рд╛ рдЙрдкрдпреЛрдЧ рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛ рдЙрдиреНрд╣реЗрдВ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ PHP рдореЗрдВ рдСрдЯреЛрд▓реЙрдб рдлрд╝рдВрдХреНрд╢рди рдирд╣реАрдВ рд╣реИрдВ рдФрд░ рд╡реЗ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдХреЙрд▓ рдХреЗ рд╕рдордп рд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ред

 class A extends \B implements \C {    use \D;    const SOME_CONST = \E::E1;    private static $someVar = \F::F1;    private $anotherVar = \G::G1; } 


рдкреНрд░реАрд▓реЛрдб рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ


рдкреНрд░реАрд▓реЛрдб рдореЗрдВ рдПрдХ рдПрдХрд▓ рдореБрдЦреНрдп рд╕реЗрдЯрд┐рдВрдЧ рд╣реИ, opcache.preload, рдЬрд┐рд╕рдореЗрдВ PHP рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рдорд╛рд░реНрдЧ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред PHP-FPM / Apache / рдЗрддреНрдпрд╛рджрд┐ рдХреЛ рд╢реБрд░реВ рдХрд░рддреЗ рд╕рдордп рдЗрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдШреЛрд╖рд┐рдд рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдХрдХреНрд╖рд╛рдУрдВ, рд╡рд┐рдзрд┐рдпреЛрдВ рдФрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рднреА рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╕рднреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реЛрдВрдЧреЗ рдЬреЛ рдЙрдирдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреА рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рд╕реЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддреЗ рд╣реИрдВ (рдорд╣рддреНрд╡рдкреВрд░реНрдг) рдзреНрдпрд╛рди рджреЗрдВ: рдпрд╣ рдЪрд░ рдФрд░ рд╡реИрд╢реНрд╡рд┐рдХ рд╕реНрдерд┐рд░рд╛рдВрдХ рдкрд░ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ - рдкреНрд░реАрд▓реЛрдб рдЪрд░рдг рдХреЗ рдЕрдВрдд рдХреЗ рдмрд╛рдж рдЙрдирдХреЗ рдорд╛рди рд╢реВрдиреНрдп рдкрд░ рд░реАрд╕реЗрдЯ рд╣реЛ рдЬрд╛рдПрдВрдЧреЗ)ред рдЖрдкрдХреЛ рд╕рд╛рдЭрд╛ рдореЗрдореЛрд░реА рд╕реЗ рдкреНрд░реЛрд╕реЗрд╕ рдореЗрдореЛрд░реА рдореЗрдВ рдХреЙрд▓ / рдХреЙрдкреА рдлрдВрдХреНрд╢рди / рдХреНрд▓рд╛рд╕ рд╕рд┐рдЧреНрдиреЗрдЪрд░ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ / рдЙрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ: рдЙрдиреНрд╣реЗрдВ рд╕рднреА рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕ рдХрд╛рд░рдг рд╕рднреА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ рдЙрд╕реА рдореЗрдореЛрд░реА рд▓реЛрдХреЗрд╢рди рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░ рд╕рдХрддреА рд╣реИрдВред

рдЖрдорддреМрд░ рдкрд░ рд╣рдореЗрдВ рдЬрд┐рди рдХрдХреНрд╖рд╛рдУрдВ рдФрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рд╡реЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдХрд┐рд╕реА рдПрдХ рдкреНрд░реАрд▓реЛрдб рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рдирд╛ рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ: рдЪреВрдВрдХрд┐ рдкреНрд░реАрд▓реЛрдб рдПрдХ рдирд┐рдпрдорд┐рдд PHP рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ, рд╣рдо рдХреЗрд╡рд▓ рдЙрди рд╕рднреА рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░реАрд▓реЛрдб рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рд╢рд╛рдорд┐рд▓ / рдЖрд╡рд╢реНрдпрдХрддрд╛ рдпрд╛ opcache_compile_file () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЪреВрдВрдХрд┐ рдпреЗ рд╕рднреА рдлрд╛рдЗрд▓реЗрдВ рдПрдХ рдмрд╛рд░ рд▓реЛрдб рд╣реЛ рдЬрд╛рдПрдВрдЧреА, рдкреАрдПрдЪрдкреА рдЕрддрд┐рд░рд┐рдХреНрдд рдЕрдиреБрдХреВрд▓рди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛ рдЬреЛ рдХрд┐ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрдмрдХрд┐ рд╣рдо рдХреНрд╡реЗрд░реА рдХреЗ рд╕рдордп рдЗрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХрдиреЗрдХреНрдЯ рдХрд░рддреЗ рд╣реИрдВред PHP рдХреЗрд╡рд▓ рдкреНрд░рддреНрдпреЗрдХ рдЕрд▓рдЧ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдврд╛рдВрдЪреЗ рдХреЗ рднреАрддрд░ рдЕрдиреБрдХреВрд▓рди рдХрд░рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдкреНрд░реАрд▓реЛрдб рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкреНрд░реАрд▓реЛрдб рдЪрд░рдг рдореЗрдВ рд▓реЛрдб рдХрд┐рдП рдЧрдП рд╕рднреА рдХреЛрдб рдХреЗ рд▓рд┐рдПред

рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдкреНрд░реАрд▓реЛрдб


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

рдкреНрд░реАрд▓реЛрдб рдХреЗ рд▓рд╛рднреЛрдВ рдХреА рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд░рд╛рд╣рдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░рдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕реЗ рдЙрди рд╕рднреА рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬреЛ рдкрд░реАрдХреНрд╖рдг рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдЖрд╡рд╢реНрдпрдХ рдереА, рдФрд░ рдЗрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рдЙрддреНрдкрд╛рджрди рднрд╛рд░ рдХреЗ рд╕рд╛рде wrk2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ - рдЕрдкрд╛рдЪреЗ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдХрд╛ рдПрдХ рдФрд░ рдЕрдзрд┐рдХ рдЙрдиреНрдирдд рдПрдирд╛рд▓реЙрдЧ, рд▓реЗрдХрд┐рди рд╕рд░рд▓ рд░реВрдк рдореЗрдВ ред

рдкреНрд░реАрд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкрд╣рд▓реЗ PHP 7.4 (рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ PHP 7.2 рд╣реИ) рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдореИрдВрдиреЗ рдкреНрд░реАрд▓реЛрдб рдХреЗ рд╕рд╛рде PHP 7.2, PHP 7.4 рдХреЗ рдмрд┐рдирд╛ PHP рдФрд░ PHP 7.4 рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдорд╛рдкрд╛ред рдкрд░рд┐рдгрд╛рдо рдПрдХ рдРрд╕реА рддрд╕реНрд╡реАрд░ рд╣реИ:



рдЗрд╕ рдкреНрд░рдХрд╛рд░, PHP 7.2 рд╕реЗ PHP 7.4 рддрдХ рдХрд╛ рд╕рдВрдХреНрд░рдордг рд╣рдорд╛рд░реЗ рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ рдкрд░ рдкреНрд░рджрд░реНрд╢рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП + 10% рджреЗрддрд╛ рд╣реИ, рдФрд░ рдкреНрд░реАрд▓реЛрдб рдКрдкрд░ рд╕реЗ рдПрдХ рдФрд░ 10% рджреЗрддрд╛ рд╣реИред

рдкреНрд░реАрд▓реЛрдб рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкрд░рд┐рдгрд╛рдо рдмрд╣реБрдд рд╣рдж рддрдХ рдХрдиреЗрдХреНрдЯреЗрдб рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рд▓реЙрдЬрд┐рдХ рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░реЗрдЧрд╛: рдпрджрд┐ рдХрдИ рдлрд╛рдЗрд▓реЗрдВ рдХрдиреЗрдХреНрдЯреЗрдб рд╣реИрдВ рдФрд░ рд▓реЙрдЬрд┐рдХ рд╕рд░рд▓ рд╣реИ, рддреЛ рдкреНрд░реАрд▓реЛрдбреНрд╕ рдХреБрдЫ рдлрд╛рдЗрд▓реЗрдВ рд╣реЛрдиреЗ рдкрд░ рдЕрдзрд┐рдХ рддрд░реНрдХ рджреЗрдВрдЧреЗ рдФрд░ рд▓реЙрдЬрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИред

рдкреНрд░реАрд▓реЛрдб рдХреА рдмрд╛рд░реАрдХрд┐рдпрд╛рдВ


рдХреНрдпрд╛ рдЙрддреНрдкрд╛рджрдХрддрд╛ рдмрдврд╝ рдЬрд╛рддреА рд╣реИ рдЖрдорддреМрд░ рдкрд░ рдПрдХ рдирдХрд╛рд░рд╛рддреНрдордХ рдкрд╣рд▓реВ рд╣реИред рдкреНрд░реАрд▓реЛрдб рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реА рдмрд╛рд░реАрдХрд┐рдпрд╛рдВ рд╣реИрдВ, рдЬреЛ рдореИрдВ рдиреАрдЪреЗ рджреВрдВрдЧрд╛ред рдЙрди рд╕рднреА рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдПрдХ (рдкрд╣рд▓реЗ) рдореМрд▓рд┐рдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдмрджрд▓рд╛рд╡ - рдкреБрдирдГ рдЖрд░рдВрдн


рдЪреВрдВрдХрд┐ рд╕рднреА рдкреНрд░реАрд▓реЛрдб рдлрд╛рдЗрд▓реЗрдВ рдХреЗрд╡рд▓ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ рд╕рдВрдХрд▓рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИрдВ, рдЬрд┐рдиреНрд╣реЗрдВ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЗрд╕реЗ рдкреБрди: рдХрдВрдкрд╛рдЗрд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрди рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ PHP- FPM / Apache /, рдЖрджрд┐ рдХреЛ рдкреБрдирдГ рдЖрд░рдВрдн (рдкреБрдирдГ рд▓реЛрдб рдпрд╛ рдкреБрдирдГ рдЖрд░рдВрдн) рдХрд░рдирд╛ рд╣реИред

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

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

рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдкрд╛рддреНрд░


рдХрд┐рд╕реА рдХрдХреНрд╖рд╛ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рд╕рдм рдХреБрдЫ рдЗрд╕ рдмрд┐рдВрджреБ рддрдХ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП, рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЕрдиреНрдп рд╕рднреА рдХрдХреНрд╖рд╛рдПрдВ (рдмреА, рд╕реА, рдбреА, рдИ, рдПрдл, рдЬреА), $someGlobalVar рдЪрд░, рдФрд░ SOME_CONST рдирд┐рд░рдВрддрд░ рдЗрд╕ рд╡рд░реНрдЧ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЙрдкрд▓рдмреНрдз рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЪреВрдВрдХрд┐ рдкреНрд░реАрд▓реЛрдб рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рд┐рд░реНрдл рдирд┐рдпрдорд┐рдд PHP рдХреЛрдб рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдПрдХ рдСрдЯреЛрд▓реИрдбрд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЕрдиреНрдп рд╡рд░реНрдЧреЛрдВ рд╕реЗ рдЬреБрдбрд╝реА рд╣рд░ рдЪреАрдЬ рдЕрдкрдиреЗ рдЖрдк рд▓реЛрдб рд╣реЛ рдЬрд╛рдПрдЧреАред рд▓реЗрдХрд┐рди рдпрд╣ рдЪрд░ рдФрд░ рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ: рд╣рдореЗрдВ рд╕реНрд╡рдпрдВ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЬрд┐рд╕ рд╕рдордп рдпрд╣ рд╡рд░реНрдЧ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЙрд╕ рд╕рдордп рдЙрдиреНрд╣реЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛред

 class A extends \B implements \C {    use \D;    const SOME_CONST = \E::E1;    private static $someVar = \F::F1;    private $anotherVar = \G::G1;    private $varLink = $someGlobalVar;    private $constLink = SOME_CONST; } 

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

 PHP Warning: Can't preload class MyTestClass with unresolved initializer for constant RAND in /local/preload-internal.php on line 6 PHP Warning: Can't preload unlinked class MyTestClass: Unknown parent AnotherClass in /local/preload-internal.php on line 5 

рджреВрд╕рд░реЗ, рдкреНрд░реАрд▓реЛрдб opcache_get_status () рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдкрд░рд┐рдгрд╛рдо рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рдЕрдиреБрднрд╛рдЧ рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рдЬреЛ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рдкреНрд░реАрд▓реЛрдб рдЪрд░рдг рдореЗрдВ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдХреНрдпрд╛ рд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:



рдХрдХреНрд╖рд╛ рдХреНрд╖реЗрддреНрд░ / рдирд┐рд░рдВрддрд░ рдЕрдиреБрдХреВрд▓рди


рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдКрдкрд░ рд▓рд┐рдЦрд╛ рд╣реИ, рдкреНрд░реАрд▓реЛрдб рдХрдХреНрд╖рд╛ рдХреЗ рдХреНрд╖реЗрддреНрд░ / рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдмрдЪрд╛рддрд╛ рд╣реИред рдпрд╣ рдЖрдкрдХреЛ рдХреЛрдб рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ: рдЕрдиреБрд░реЛрдз рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рджреМрд░рд╛рди, рдбреЗрдЯрд╛ рддреИрдпрд╛рд░ рд╣реИ рдФрд░ рдЗрд╕реЗ рдЕрдиреНрдп рдбреЗрдЯрд╛ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рдЧреИрд░-рд╕реНрдкрд╖реНрдЯ рдкрд░рд┐рдгрд╛рдо рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдирд┐рдореНрди рдЙрджрд╛рд╣рд░рдг рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ:

 const.php: <?php define('MYTESTCONST', mt_rand(1, 1000)); 

 preload.php: <?php include 'const.php'; class MyTestClass {    const RAND = MYTESTCONST; } 

 script.php: <?php include 'const.php'; echo MYTESTCONST, ', ', MyTestClass::RAND; // 32, 154 

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

рдХреБрдЫ рдкреБрдирдГ рд▓реЛрдб рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ()


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

рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рд╕реНрдерд┐рддрд┐ рдЕрд▓рдЧ рд╣реИ: рд╣рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣ рдПрдХ рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдХрд╛ рдХрд╛рд░рдг рдмрди рд╕рдХрддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдкреНрд░реАрд▓реЛрдб рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╣рдо рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝ рджреЗрдВрдЧреЗ, рдФрд░ рдЕрдиреБрд░реЛрдз рдХреЗ рджреМрд░рд╛рди рд╣рдо рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВрдЧреЗ (рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрджрд╛рд╣рд░рдг рдХрдореНрдкреЛрдЬрд╝рд░ рдмреВрдЯрд▓реЛрдбрд░ рд╣реИ: рдпрд╣ рд╣рдореЗрд╢рд╛ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рд╕рднреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдЧрд╛)ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ: рдлрд╝рдВрдХреНрд╢рди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╕рдВрдЧреАрддрдХрд╛рд░ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдк рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреНрд░реАрд▓реЛрдб рдЪрд░рдг рдореЗрдВ рд╕рдм рдХреБрдЫ рдХрдиреЗрдХреНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рджреМрд░рд╛рди рд╕рдВрдЧреАрддрдХрд╛рд░ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХреБрдЫ рднреА рдХрдиреЗрдХреНрдЯ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рдЕрдиреНрдп рд╕рдорд╛рдзрд╛рди рд╕реАрдзреЗ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд╝рдВрдХреНрд╢рди_exists () рдХреЗ рд▓рд┐рдП рдПрдХ рдЪреЗрдХ рдХреЗ рд╕рд╛рде рдПрдХ рдкреНрд░реЙрдХреНрд╕реА рдлрд╝рд╛рдЗрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЧреБрдЬрд╝рд▓реЗ HTTP рдХрд░рддрд╛ рд╣реИ ред



PHP 7.4 рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рддреМрд░ рдкрд░ рдЕрднреА рддрдХ (рдЕрднреА рддрдХ) рдЬрд╛рд░реА рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ


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

RoadRunner


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

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЕрдЧрд░ рд╣рдо рдЕрдкрдиреА рд╕реВрдЪреА рдХреЛ рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ "рдХреНрд▓рд╛рд╕рд┐рдХ" PHP рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдХреМрди рд╕реЗ рд╕рдВрд╕рд╛рдзрди рдЦрд░реНрдЪ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рд░реЛрдбрд░рдирд░ рдЖрдкрдХреЛ рд╕рднреА рдмрд┐рдВрджреБрдУрдВ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ (рдкреНрд░реАрд▓реЛрдб, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВ, рдХреЗрд╡рд▓ рдкрд╣рд▓реЗ рдХреЗ рд╕рд╛рде рд╣реИ):

  • рдлрд╝рд╛рдЗрд▓ рдХрдиреЗрдХреНрд╢рди (рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ, рдЖрд╡рд╢реНрдпрдХрддрд╛, рдЖрджрд┐);
  • рдЖрд░рдВрднреАрдХрд░рдг (рдврд╛рдВрдЪрд╛, рдкреБрд╕реНрддрдХрд╛рд▓рдп, рдбреАрдЖрдИ рдХрдВрдЯреЗрдирд░, рдЖрджрд┐);
  • рдмрд╛рд╣реНрдп рд╕рдВрдЧреНрд░рд╣рдг (рд╕реНрдореГрддрд┐ рдореЗрдВ рднрдВрдбрд╛рд░рдг рдХреЗ рдмрдЬрд╛рдп) рд╕реЗ рдбреЗрдЯрд╛ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░реЗрдВред

рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб рд░реЛрдбрд░рдирд░ рдЙрджрд╛рд╣рд░рдг рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

 $relay = new Spiral\Goridge\StreamRelay(STDIN, STDOUT); $psr7 = new Spiral\RoadRunner\PSR7Client(new Spiral\RoadRunner\Worker($relay)); while ($req = $psr7->acceptRequest()) {        $resp = new \Zend\Diactoros\Response();        $resp->getBody()->write("hello world");        $psr7->respond($resp); } 

рд╣рдо рдЕрдкрдиреЗ рд╡рд░реНрддрдорд╛рди рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВрдЧреЗ, рдЬрд┐рд╕реЗ рд╣рдордиреЗ рдкреНрд░реАрд▓реЛрдб рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдерд╛, рд░реЛрдбрд░рдирд░ рдкрд░ рд╕рдВрд╢реЛрдзрдиреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕реЗ рд▓реЛрдб рдХрд░реЗрдВ рдФрд░ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдорд╛рдкреЗрдВред рдХреЛрдИ рд╕рдВрд╢реЛрдзрди рдирд╣реАрдВ - рдХреНрдпреЛрдВрдХрд┐ рдЕрдиреНрдпрдерд╛ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдИрдорд╛рдирджрд╛рд░ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

рдЖрдЗрдП рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб рдЙрджрд╛рд╣рд░рдг рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдКрдкрд░ рд▓рд┐рдЦрд╛ рд╣реИ, рд╣рдо рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рддреНрд░реБрдЯрд┐ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЧрд┐рд░ рдЬрд╛рдПред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рдкреНрд░рдпрд╛рд╕ рдореЗрдВ рд╕рдм рдХреБрдЫ рд▓рдкреЗрдЯрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ..рдЪреЗрдХ рдХрд░реЗрдВред рджреВрд╕рд░реЗ, рдЪреВрдБрдХрд┐ рд╣рдорд╛рд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ Zend Diactoros рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдкрддрд╛ рд╣реИ, рдЬрд╡рд╛рдм рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдЗрд╕рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдо ob_-functions рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рддреАрд╕рд░рд╛, рд╣рдорд╛рд░реА рд▓рд┐рдкрд┐ рдХреЛ PSR-7 рдЕрдиреБрд░реЛрдз рдХреА рдкреНрд░рдХреГрддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдкрддрд╛ рдирд╣реАрдВ рд╣реИред рд╕рдорд╛рдзрд╛рди рдЗрди рд╕рдВрд╕реНрдерд╛рдУрдВ рд╕реЗ рдорд╛рдирдХ PHP рд╡рд╛рддрд╛рд╡рд░рдг рдХреЛ рдЖрдмрд╛рдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИред рдФрд░ рдЪреМрдерд╛, рд╣рдорд╛рд░реА рд▓рд┐рдкрд┐ рдХреЛ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдорд░рдиреЗ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдкреВрд░реЗ рд░рд╛рдЬреНрдп рдХреЛ рд╕рд╛рдл рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕рд▓рд┐рдП, рд░реЛрдбрд░рдирд░ рдХреЗ рд╕рд╛рде рд╣рдореЗрдВ рдпрд╣ рд╕рдлрд╛рдИ рдЦреБрдж рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб рд╕рдВрд╕реНрдХрд░рдг рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ:

 while ($req = $psr7->acceptRequest()) {    try {        $uri = $req->getUri();        $_COOKIE = $req->getCookieParams();        $_POST = $req->getParsedBody();        $_SERVER = [            'REQUEST_METHOD' => $req->getMethod(),            'HTTP_HOST' => $uri->getHost(),            'DOCUMENT_URI' => $uri->getPath(),            'SERVER_NAME' => $uri->getHost(),            'QUERY_STRING' => $uri->getQuery(),            // ...        ];        ob_start();        // our logic here        $output = ob_get_contents();        ob_clean();               $resp = new \Zend\Diactoros\Response();        $resp->getBody()->write($output, 200);        $psr7->respond($resp);    } catch (\Throwable $Throwable) {        // some error handling logic here    }    \UDS\Event::flush();    \PinbaClient::sendAll();    \PinbaClient::flushAll();    \HTTP::clear();    \ViewFactory::clear();    \Logger::clearCaches();       // ... } 


рдмреЗрдВрдЪрдорд╛рд░реНрдХ рд░реЛрдбрд░рдирд░


рд╡реИрд╕реЗ, рдмреЗрдВрдЪрдорд╛рд░реНрдХ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдЖ рдЧрдпрд╛ рд╣реИред



рдкрд░рд┐рдгрд╛рдо рдЕрдкреЗрдХреНрд╖рд╛рдУрдВ рдкрд░ рдЦрд░реЗ рдирд╣реАрдВ рдЙрддрд░рддреЗ: рд░реЛрдбрд░рдирд░ рдЖрдкрдХреЛ рдкреНрд░реАрд▓реЛрдб рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдиреБрдХрд╕рд╛рди рдХреЗ рдХрд╛рд░рдг рдЕрдзрд┐рдХ рдХрд╛рд░рдХреЛрдВ рдХреЛ рд╕рдорддрд▓ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкрд░рд┐рдгрд╛рдо рдмрджрддрд░ рд╣реИрдВред рдЖрдЗрдП рдЬрд╛рдиреЗрдВ рдХрд┐ рдРрд╕рд╛ рдХреНрдпреЛрдВ рд╣реЛрддрд╛ рд╣реИ, рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рдЗрд╕рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдгрддрд╛ рджреМрдбрд╝рдиреЗ рд╕реЗред



рд╕рд╣реА рдкрд░рд┐рдгрд╛рдореЛрдВ рдореЗрдВ, рд╣рдореЗрдВ phar_compile_file рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди рдХреБрдЫ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЪреВрдВрдХрд┐ OPcache рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИ (RoadRunner CLI рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ OPcache рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ), рдЗрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз рдХреЗ рд╕рд╛рде рдлрд┐рд░ рд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд░реЛрдбрд░рдирд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ - OPcache рд╕рдХреНрд╖рдо рдХрд░реЗрдВ:





рдпреЗ рдкрд░рд┐рдгрд╛рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдзрд┐рдХ рд╣реИрдВ рдЬреИрд╕реЗ рдХрд┐ рд╣рдо рдХреНрдпрд╛ рджреЗрдЦрдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░рддреЗ рд╣реИрдВ: рд░реЛрдбрд░рдирд░ рдиреЗ рдкреНрд░реАрд▓реЛрдб рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдкреНрд░рджрд░реНрд╢рди рджрд┐рдЦрд╛рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ред рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж рд╣рдо рдФрд░ рднреА рдЕрдзрд┐рдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗ!

рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ perf рдХреЗ рд╕рд╛рде рдХреБрдЫ рднреА рдЕрдзрд┐рдХ рдЕрд╕рд╛рдорд╛рдиреНрдп рдирд╣реАрдВ рд╣реИ - рдЖрдЗрдП PHP рдХреЛрдб рдХреЛ рджреЗрдЦреЗрдВред рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк phpspy рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ : рдЗрд╕реЗ PHP рдХреЛрдб рдХреЗ рдХрд┐рд╕реА рднреА рд╕рдВрд╢реЛрдзрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ - рдЖрдкрдХреЛ рдЗрд╕реЗ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЖрдЗрдП рдЗрд╕реЗ рдХрд░реЗрдВ рдФрд░ рдПрдХ рд▓реМ рдЧреНрд░рд╛рдл рдмрдирд╛рдПрдВ:



рдЪреВрдВрдХрд┐ рд╣рдо рдкреНрд░рдпреЛрдЧ рдХреА рд╢реБрджреНрдзрддрд╛ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдХреЗ рддрд░реНрдХ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдирд╣реАрдВ рдХрд░рдиреЗ рдкрд░ рд╕рд╣рдордд рд╣реБрдП, рдЗрд╕рд▓рд┐рдП рд╣рдо рд░реЛрдбрд░рдирд░ рдХреЗ рдХрд╛рдо рд╕реЗ рдЬреБрдбрд╝реА рд╕реНрдЯреИрдХ рд╢рд╛рдЦрд╛ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ:



рдЗрд╕рдХрд╛ рдореБрдЦреНрдп рднрд╛рдЧ рдлрд╝реНрд░реЗрдб () рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдиреАрдЪреЗ рдЖрддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рд╕рд╛рде рд╢рд╛рдпрдж рд╣реА рдХреБрдЫ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╣рдо рдХреБрдЫ рдЕрдиреНрдп рд╢рд╛рдЦрд╛рдУрдВ рдХреЛ \ Spiral \ RoadRunner \ PSR7Client :: acceptRequest () рдореЗрдВ рджреЗрдЦрддреЗ рд╣реИрдВ , рдХреЗрд╡рд▓ рдЦреБрдж рдХреЛ рдЫреЛрдбрд╝рдХрд░ред рдЖрдк рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рджреЗрдЦрдХрд░ рдЙрдирдХрд╛ рдЕрд░реНрде рд╕рдордЭ рд╕рдХрддреЗ рд╣реИрдВ:

    /**     * @return ServerRequestInterface|null     */    public function acceptRequest()    {        $rawRequest = $this->httpClient->acceptRequest();        if ($rawRequest === null) {            return null;        }        $_SERVER = $this->configureServer($rawRequest['ctx']);        $request = $this->requestFactory->createServerRequest(            $rawRequest['ctx']['method'],            $rawRequest['ctx']['uri'],            $_SERVER        );        parse_str($rawRequest['ctx']['rawQuery'], $query);        $request = $request            ->withProtocolVersion(static::fetchProtocolVersion($rawRequest['ctx']['protocol']))            ->withCookieParams($rawRequest['ctx']['cookies'])            ->withQueryParams($query)            ->withUploadedFiles($this->wrapUploads($rawRequest['ctx']['uploads'])); 

рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рд░реЛрдбрд░рдирд░ рдХреНрд░рдордмрджреНрдз рд╕рд░рдгреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ PSR-7-рдЕрдиреБрд░реВрдк рдЕрдиреБрд░реЛрдз рд╡рд╕реНрддреБ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдХрд╛ рдлреНрд░реЗрдорд╡рд░реНрдХ PSR-7 рдХреНрд╡реЗрд░реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде рд╕реАрдзреЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рд┐рдореНрдлрдиреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ ), рддреЛ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЙрдЪрд┐рдд рд╣реИред рдЕрдиреНрдп рдорд╛рдорд▓реЛрдВ рдореЗрдВ, PSR-7 рдЕрдиреБрд░реЛрдз рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд▓рд┐рдВрдХ рдмрди рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХрд╛ рдЖрд╡реЗрджрди рдХрд┐рд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЖрдЗрдП рдЗрд╕ рдордзреНрдпрд╡рд░реНрддреА рд▓рд┐рдВрдХ рдХреЛ рд╣рдЯрд╛ рджреЗрдВ рдФрд░ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рдгрд╛рдо рджреЗрдЦреЗрдВ:



рдкрд░реАрдХреНрд╖рдг рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛рдлреА рдЖрд╕рд╛рди рдереА, рдЗрд╕рд▓рд┐рдП рдореИрдВ рд╢реБрджреНрдз PHP рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣рд┐рд╕реНрд╕рд╛ - + 17% рдирд┐рдЪреЛрдбрд╝рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛ (рдореБрдЭреЗ рдпрд╛рдж рд╣реИ рдХрд┐ рдкреНрд░реАрд▓реЛрдб рдЙрд╕реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░ + 10% рджреЗрддрд╛ рд╣реИ)ред

рд░реЛрдбрд░рдирд░ рдХреА рдмрд╛рд░реАрдХрд┐рдпрд╛рдВ


рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд░реЛрдбрд░рдирд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рдкреНрд░реАрд▓реЛрдб рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдЧрдВрднреАрд░ рдкрд░рд┐рд╡рд░реНрддрди рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣рд╛рдВ рдХреА рдмрд╛рд░реАрдХрд┐рдпрд╛рдВ рдФрд░ рднреА рдЕрдзрд┐рдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИрдВред

-, RoadRunner, , PHP- , , , : , , .

-, RoadRunner , ┬л┬╗ тАФ . / RoadRunner ; , , , , - .

-, endpoint', , , RoadRunner. .

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


, ┬л┬╗ PHP, , preload RoadRunner.

PHP ┬л┬╗ (PHP-FPM, Apache mod_php ) . - , . , , preload JIT.

, , , RoadRunner, .

, (: ):

  • PHP 7.2 тАФ 845 RPS;
  • PHP 7.4 тАФ 931 RPS;
  • RoadRunner тАФ 987 RPS;
  • PHP 7.4 + preload тАФ 1030 RPS;
  • RoadRunner тАФ 1089 RPS.

Badoo PHP 7.4 , ( ).

RoadRunner , , , , .

рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

Source: https://habr.com/ru/post/hi472528/


All Articles