рдХреИрд╕реЗ рдореИрдВ PHP рд╕реЗ NodeJS рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдбрд╝рд╛рди рдЦреЛрдЬ рдЗрдВрдЬрди рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрд╛

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


рдкрд░рд┐рдЪрдп


рдЗрдВрдЬрди рд▓рд┐рдЦрддреЗ рд╕рдордп, рдореИрдВрдиреЗ рд╕рдмрд╕реЗ рд╕рд░рд▓ рддрдХрдиреАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдХреЛрдИ рдкреИрдХреЗрдЬ рдореИрдиреЗрдЬрд░ рдирд╣реАрдВ, рдХреЛрдИ рд░реВрдЯрд┐рдВрдЧ рдирд╣реАрдВред рдХреЗрд╡рд▓ рдХрдЯреНрдЯрд░ рдлрд╝реЛрд▓реНрдбрд░, рдЬрд┐рдирдХреЗ рдирд╛рдо рдЕрдиреБрд░реЛрдз рдХрд┐рдП рдЧрдП рдорд╛рд░реНрдЧ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ index.php , рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкреВрд▓ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП PHP-FPM рджреНрд╡рд╛рд░рд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдмрд╛рдж рдореЗрдВ рд╕рдВрдЧреАрддрдХрд╛рд░ рдФрд░ рд▓рд╛рд░рд╡реЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рдЧрдпрд╛, рдЬреЛ рдореЗрд░реЗ рд▓рд┐рдП рдЖрдЦрд┐рд░реА рддрд┐рдирдХрд╛ рдерд╛ред рдХрд╣рд╛рдиреА рдХреА рдУрд░ рдмрдврд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдореИрдВрдиреЗ рднреА PHP рд╕реЗ NodeJS рддрдХ рд╕рдм рдХреБрдЫ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХреНрдпреЛрдВ рдХрд┐рдпрд╛, рдореИрдВ рдЖрдкрдХреЛ рдкреГрд╖реНрдарднреВрдорд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рдмрддрд╛рдКрдВрдЧрд╛ред


рдкреИрдХреЗрдЬ рдкреНрд░рдмрдВрдзрдХ


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


Wut?


рдореЗрд░реЗ рд▓рд┐рдП, рд▓рд┐рдирдХреНрд╕ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдФрд░ рдбреЗрдмрд┐рдпрди рдФрд░ рдЙрдмрдВрдЯреВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдЕрдиреБрднрд╡ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде, рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╕реНрдкрд╖реНрдЯ рдерд╛ - рдПрдХ SWAP рдлрд╝рд╛рдЗрд▓ (рдПрдХ рд╕реНрд╡реИрдк рдлрд╝рд╛рдЗрд▓ - рдЬреЛ рдХрд┐ рд▓рд┐рдирдХреНрд╕ рдкреНрд░рд╢рд╛рд╕рди рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реИрдВ) рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ред рдПрдХ рдиреМрд╕рд┐рдЦрд┐рдпрд╛ рдЕрдиреБрднрд╡рд╣реАрди рдбреЗрд╡рд▓рдкрд░ рдЬрд┐рд╕рдиреЗ рдбрд┐рдЬрд┐рдЯрд▓ рдорд╣рд╛рд╕рд╛рдЧрд░ рдкрд░ рдЕрдкрдирд╛ рдкрд╣рд▓рд╛ рд▓рд╛рд░рд╡реЗрд▓ рд╡рд┐рддрд░рдг рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдмрд╕ рдирд┐рдпрдВрддреНрд░рдг рдХрдХреНрд╖ рдореЗрдВ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЯреИрд░рд┐рдл рдмрдврд╝рд╛рддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдирд┐рд░реНрднрд░рддрд╛ рдХреА рд╕реНрдерд╛рдкрдирд╛ рдПрдХ рдореЗрдореЛрд░реА рд╡рд┐рднрд╛рдЬрди рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рдмрдВрдж рд╣реЛ рдЬрд╛рддреА рд╣реИред NodeJS рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛?
рдФрд░ NodeJS рдХрд╛ рдЕрдкрдирд╛ рдкреИрдХреЗрдЬ рдореИрдиреЗрдЬрд░ рд╣реИ - npmред рдпрд╣ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИ, рдЕрдзрд┐рдХ рдХреЙрдореНрдкреИрдХреНрдЯ рд╣реИ, рдиреНрдпреВрдирддрдо рд░реИрдо рдХреЗ рд╕рд╛рде рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рднреА рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдПрдирдкреАрдПрдо рдХреА рдкреГрд╖реНрдарднреВрдорд┐ рдХреЗ рдЦрд┐рд▓рд╛рдл рдХрдореНрдкреЛрдЬрд╝рд░ рдХреЛ рджреЛрд╖ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдкреИрдХреЗрдЬреЛрдВ рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рджреМрд░рд╛рди рдХрд┐рд╕реА рднреА рддреНрд░реБрдЯрд┐ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХрдВрдкреЛрдЬрд╝рд░ рдПрдХ рд╕рд╛рдзрд╛рд░рдг PHP рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рддрд░рд╣ рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рд╣реЛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдЖрдкрдХреЛ рдХрднреА рдкрддрд╛ рдирд╣реАрдВ рдЪрд▓реЗрдЧрд╛ рдХрд┐ рдкреИрдХреЗрдЬ рдХрд╛ рдХреМрди рд╕рд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╕реНрдерд╛рдкрд┐рдд рд╣реЛрдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛ рдФрд░ рдХреНрдпрд╛ рдпрд╣ рдЕрдВрдд рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдЯрд░реНрдорд┐рдирд╕ред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд▓рд┐рдирдХреНрд╕ рдкреНрд░рд╢рд╛рд╕рдХ рдХреЗ рд▓рд┐рдП, рдмрдЪрд╛рд╡ рдореЛрдб рдореЗрдВ рдлреНрд▓реИрд╢ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди = рдлреНрд▓реИрд╢рдмреИрдХ рдФрд░ dpkg --configure -a ред рдЬрдм рддрдХ рдЗрд╕ рддрд░рд╣ рдХреЗ "рдЖрд╢реНрдЪрд░реНрдп" рдиреЗ рдореБрдЭреЗ рдкрдЫрд╛рдбрд╝ рджрд┐рдпрд╛, рдореБрдЭреЗ PHP рдкрд╕рдВрдж рдирд╣реАрдВ рдЖрдпрд╛, рд▓реЗрдХрд┐рди рдпреЗ PHP рдХреЗ рд▓рд┐рдП рдореЗрд░реЗ рдПрдХ рдмрд╛рд░ рдХреЗ рдорд╣рд╛рди рдкреНрдпрд╛рд░ рдХреЗ рддрд╛рдмреВрдд рдореЗрдВ рдЖрдЦрд┐рд░реА рдирд╛рдЦреВрди рдереЗред


рджреАрд░реНрдШрдХрд╛рд▓рд┐рдХ рд╕рдорд░реНрдерди рдФрд░ рд╕рдВрд╕реНрдХрд░рдг рдЬрд╛рд░реА рдХрд░рдирд╛


рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдбреЗрд╡рд▓рдкрд░реНрд╕ рджреНрд╡рд╛рд░рд╛ рдкрд╣рд▓реА рдмрд╛рд░ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдП рдЬрд╛рдиреЗ рдкрд░ PHP7 рдХреЗ рдХрд╛рд░рдг рдХрд┐рд╕ рддрд░рд╣ рдХрд╛ рдкреНрд░рдЪрд╛рд░ рдФрд░ рд╡рд┐рд╕реНрдордп рд╣реБрдЖ? рдЙрддреНрдкрд╛рджрдХрддрд╛ рдореЗрдВ 2 рдЧреБрдирд╛ рд╕реЗ рдЕрдзрд┐рдХ рдХреА рд╡реГрджреНрдзрд┐, рдФрд░ рдХреБрдЫ рдШрдЯрдХреЛрдВ рдореЗрдВ 5 рдЧреБрдирд╛ рддрдХ! рдпрд╛рдж рд╣реИ рдЬрдм PHP рд╕рд╛рддрд╡реЗрдВ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЬрдиреНрдо рд╣реБрдЖ рдерд╛? рдФрд░ рдХрд┐рддрдиреА рдЬрд▓реНрджреА рд╡рд░реНрдбрдкреНрд░реЗрд╕ рдХрдорд╛рдпрд╛! рдпрд╣ рджрд┐рд╕рдВрдмрд░ 2015 рдерд╛ред рдХреНрдпрд╛ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ PHP 7.0 рдХреЛ рдЕрдм PHP рдХрд╛ рдЕрдкреНрд░рдЪрд▓рд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреА рдЕрддреНрдпрдзрд┐рдХ рдЕрдиреБрд╢рдВрд╕рд╛ рдХреА рдЬрд╛рддреА рд╣реИ ... рдирд╣реАрдВ, 7.1 рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ 7.2 рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВред рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рд╕рдВрд╕реНрдХрд░рдг 7.1 рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдХреНрд░рд┐рдп рд╕рдорд░реНрдерди рд╕реЗ рд╡рдВрдЪрд┐рдд рд╣реИ рдФрд░ рдХреЗрд╡рд▓ рд╕реБрд░рдХреНрд╖рд╛ рдЕрдкрдбреЗрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред рдФрд░ 8 рдорд╣реАрдиреЗ рдХреЗ рдмрд╛рдж рдпрд╣ рдмрдВрдж рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рд╕рдХреНрд░рд┐рдп рд╕рдорд░реНрдерди рдФрд░ рд╕рдВрд╕реНрдХрд░рдг 7.2 рдХреЗ рд╕рд╛рде, рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдЗрд╕ рд╕рд╛рд▓ рдХреЗ рдЕрдВрдд рддрдХ, PHP рдХрд╛ рдХреЗрд╡рд▓ рдПрдХ рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг рд╣реЛрдЧрд╛ - 7.3ред


рд╡рд░реНрддрдорд╛рди PHP рд╕рдВрд╕реНрдХрд░рдг


рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рдирд╛рдЗрдЯ-рдкрд┐рдХрд┐рдВрдЧ рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдФрд░ рдореИрдВ рдЗрд╕реЗ PHP рд╕реЗ рдореЗрд░реЗ рдкреНрд░рд╕реНрдерд╛рди рдХреЗ рдХрд╛рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдмрддрд╛рдКрдВрдЧрд╛ рдЕрдЧрд░ PHP 7.0 рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ Iред * рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдбрд┐рдкреНрд░реЗрд╕реЗрд╢рди рдЪреЗрддрд╛рд╡рдиреА рдХрд╛ рдХрд╛рд░рдг рдирд╣реАрдВ рдерд╛ рдЬрдм рдореИрдВрдиреЗ рдЗрд╕реЗ рдЦреЛрд▓рд╛ред рдЖрдЗрдП рд╣рдо рдЙрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рд▓реМрдЯреЗрдВ рдЬрд╣рд╛рдВ рдирд┐рд░реНрднрд░рддрд╛ рдХреА рд╕реНрдерд╛рдкрдирд╛ рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рд╣реЛ рдЧрдИред рдпрд╣ 2015 рдореЗрдВ рд▓рд╛рд░рд╛рд╡реЗрд▓ 4 рдкрд░ PHP 5.6 рдХреЗ рд╕рд╛рде рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдерд╛ред рдРрд╕рд╛ рд▓рдЧ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдХреЗрд╡рд▓ 4 рд╕рд╛рд▓ рдмреАрдд рдЪреБрдХреЗ рдереЗ, рд▓реЗрдХрд┐рди рдирд╣реАрдВ - рдбрд┐рдкреНрд░реЗрд╢рди рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХрд╛ рдПрдХ рд╕рдореВрд╣, рдкреБрд░рд╛рдиреЗ рдореЙрдбреНрдпреВрд▓, рд░реВрдЯ рдЗрдВрдЬрди рдЕрдкрдбреЗрдЯреНрд╕ рдХреЗ рдЭреБрдВрдб рдХреЗ рдХрд╛рд░рдг рд▓рд╛рд░рд╡реЗрд▓ 5 рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрдерддрд╛ред


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


NodeJS рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛? рдореИрдВ рдпрд╣ рдирд╣реАрдВ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рдмреЗрд╣рддрд░ рд╣реИ рдФрд░ рдпрд╣ рдХрд┐ NodeJS рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЕрд╡рдзрд┐ рдореВрд▓ рд░реВрдк рд╕реЗ PHP рд╕реЗ рдЕрд▓рдЧ рд╣реИред рдирд╣реАрдВ, рдпрд╣ рдЙрд╕реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдпрд╣рд╛рдБ рд╣реИ - рдкреНрд░рддреНрдпреЗрдХ рдПрд▓рдЯреАрдПрд╕ рд╕рдВрд╕реНрдХрд░рдг 3 рд╕рд╛рд▓ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерд┐рдд рд╣реИред рд▓реЗрдХрд┐рди NodeJS рдХреЗ рдкрд╛рд╕ рдЗрди рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг рд╣реИрдВред


NodeJS рдХреЗ рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг


рдпрджрд┐ рдЖрдкрдХреЛ 2016 рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рддреИрдирд╛рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдкрдХреЛ рдЗрд╕рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реЛрдЧреАред рд╕рдВрдпреЛрдЧ рд╕реЗ, рд╕рдВрд╕реНрдХрд░рдг 6. * рдЕрдм рдХреЗрд╡рд▓ рдЗрд╕ рд╡рд░реНрд╖ рдЕрдкреНрд░реИрд▓ рдореЗрдВ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдФрд░ рд╕рд╛рдордиреЗ 8, 10, 11 рдФрд░ рдЖрдиреЗ рд╡рд╛рд▓реЗ 12 рд╣реИрдВред


NodeJS рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рддреЗ рд╕рдордп рдХрдард┐рдирд╛рдЗрдпрд╛рдБ рдФрд░ рдЖрд╢реНрдЪрд░реНрдп


рдореЗрд░реЗ рд▓рд┐рдП, NodeJS рдореЗрдВ HTML рдкреГрд╖реНрдареЛрдВ рдХреЛ рдХреИрд╕реЗ рд░реЗрдВрдбрд░ рдХрд┐рдпрд╛ рдЬрд╛рдП, рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдмрд╕реЗ рд░реЛрдорд╛рдВрдЪрдХ рд╕рд╡рд╛рд▓, рд╢рд╛рдпрдж рдореИрдВ рд╢реБрд░реВ рдХрд░реВрдБред рд▓реЗрдХрд┐рди рдЖрдЗрдП рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдпрд╣ рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ PHP рдореЗрдВ рдпрд╣ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:


  1. HTML рдХреЛ рд╕реАрдзреЗ PHP рдХреЛрдб рдореЗрдВ рдПрдореНрдмреЗрдб рдХрд░реЗрдВред рддреЛ рдЙрди рд╕рднреА newbies рдХрд░реЗрдВ рдЬреЛ рдЕрднреА рддрдХ MVC рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪреЗ рд╣реИрдВред рдФрд░ рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╡рд░реНрдбрдкреНрд░реЗрд╕ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдмрд┐рд▓реНрдХреБрд▓ рднрдпрд╛рд╡рд╣ рд╣реИред
  2. рдПрдорд╡реАрд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдЬреЛ рдбреЗрд╡рд▓рдкрд░ рдХреА рдмрд╛рддрдЪреАрдд рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдП рдФрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдХреБрдЫ рд╣рд┐рд╕реНрд╕реЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░реЗ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрдИ рдмрд╛рд░ рд╕рдм рдХреБрдЫ рдЙрд▓рдЭрд╛ рджреЗрддрд╛ рд╣реИред
  3. рдЯреЗрдореНрдкрд▓реЗрдЯ рдЗрдВрдЬрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рд╕рдмрд╕реЗ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╡рд┐рдХрд▓реНрдк, рд▓реЗрдХрд┐рди PHP рдореЗрдВ рдирд╣реАрдВред рдмрд╕ рдШреБрдВрдШрд░рд╛рд▓реЗ рдмреНрд░реЗрд╕рд┐рдЬрд╝ рдФрд░ рдкреНрд░рддрд┐рд╢рдд рдХреЗ рд╕рд╛рде рдЯреНрд╡рд┐рдЧ рдпрд╛ рдмреНрд▓реЗрдб рдореЗрдВ рд╕реБрдЭрд╛рдП рдЧрдП рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХреЛ рджреЗрдЦреЗрдВред

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


  div.row.links div.col-lg-3.col-md-3.col-sm-4 h4.footer-heading . div.copyright div.copy-text 2017 - #{current_year} . div.contact-link span : a(href='mailto:hello@flaut.ru') hello@flaut.ru 3.col-sm-  div.row.links div.col-lg-3.col-md-3.col-sm-4 h4.footer-heading . div.copyright div.copy-text 2017 - #{current_year} . div.contact-link span : a(href='mailto:hello@flaut.ru') hello@flaut.ru 

рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ: рдореИрдВрдиреЗ рдПрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рд▓рд┐рдЦрд╛, рдЗрд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛, рдЗрд╕реЗ рдПрдХ рдмрд╛рд░ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдФрд░ рдлрд┐рд░ рдХрд┐рд╕реА рднреА рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╕реНрдерд╛рди рдкрд░ рдХрд┐рд╕реА рднреА рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╕рдордп рдкрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, PugJS рдХрд╛ рдкреНрд░рджрд░реНрд╢рди HTML рдХреЛ PHP рдХреЛрдб рдореЗрдВ рдПрдореНрдмреЗрдб рдХрд░рдХреЗ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рд╕реЗ рд▓рдЧрднрдЧ 2 рдЧреБрдирд╛ рдмреЗрд╣рддрд░ рд╣реИред рдпрджрд┐ рдкрд╣рд▓реЗ PHP рдореЗрдВ рд▓рдЧрднрдЧ 200-250 рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдореЗрдВ рдПрдХ рд╕реНрдереИрддрд┐рдХ рдкреГрд╖реНрда рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рдерд╛, рддреЛ рдЕрдм рдпрд╣ рд╕рдордп рд▓рдЧрднрдЧ 90-120 рдорд┐рд▓реАрд╕реЗрдХрдВрдб рд╣реИ (рд╣рдо PugJS рдореЗрдВ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдкреЗрдЬ рд╕реЗ рд▓рд┐рдП рдЧрдП рд╕рдордп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рддреИрдпрд╛рд░ рдПрдЪрдЯреАрдПрдордПрд▓ рдХреЗ рд╕рд╛рде рдХреНрд▓рд╛рдЗрдВрдЯ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддреЗ рд╣реИрдВред )ред рдпрд╣ рд╣реИ рдХрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рдЪрд░рдг рдореЗрдВ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдФрд░ рдЙрдирдХреЗ рдШрдЯрдХреЛрдВ рдХреЛ рд▓реЛрдб рдХрд░рдирд╛ рдФрд░ рд╕рдВрдХрд▓рди рдХрд░рдирд╛ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:


 const pugs = {} fs.readdirSync(__dirname + '/templates/').forEach(file => { if(file.endsWith('.pug')) { try { var filepath = __dirname + '/templates/' + file pugs[file.split('.pug')[0]] = pug.compile(fs.readFileSync(filepath, 'utf-8'), { filename: filepath }) } catch(e) { console.error(e) } } }) //       return pugs.tickets({ ...config }) 

рдпрд╣ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдк рд╕реЗ рд╕рд░рд▓ рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЬреЗрдб рдХреЗ рд╕рд╛рде рдкрд╣рд▓реЗ рд╕реЗ рд╕рдВрдХрд▓рд┐рдд HTML рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдЪрд░рдг рдореЗрдВ рдереЛрдбрд╝реА рдЬрдЯрд┐рд▓рддрд╛ рдереАред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдкреГрд╖реНрда рдкрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕реЗ рд╕рднреА .js рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ рдЕрдкрдиреЗ рдЕрдВрддрд┐рдо рдкрд░рд┐рд╡рд░реНрддрди рдХреА рддрд╛рд░реАрдЦ рдЬреЛрдбрд╝рддрд╛ рд╣реИред рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдирд┐рдореНрди рд░реВрдк рд╣реИ:


 for(let i = 0; i < files.length; i++) { let period = files[i].lastIndexOf('.') // get last dot in filename let filename = files[i].substring(0, period) let extension = files[i].substring(period + 1) if(extension === 'js') { let fullFilename = filename + '.' + extension if(env === 'production') { scripts.push({ path: paths.production.web + fullFilename, mtime: await getMtime(paths.production.code + fullFilename)}) } else { if(files[i].startsWith('common') || files[i].startsWith('search')) { scripts.push({ path: paths.developer.scripts.web + fullFilename, mtime: await getMtime(paths.developer.scripts.code + fullFilename)}) } else { scripts.push({ path: paths.developer.vendor.web + fullFilename, mtime: await getMtime(paths.developer.vendor.code + fullFilename)}) } } } } 

рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ, рд╣рдореЗрдВ рджреЛ рдЧреБрдгреЛрдВ рд╡рд╛рд▓реА рд╡рд╕реНрддреБрдУрдВ рдХреА рдПрдХ рд╕рд░рдгреА рдорд┐рд▓рддреА рд╣реИ - рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдкрде рдФрд░ рд╕рдордп рдЬреЛ рдЗрд╕реЗ рдЖрдЦрд┐рд░реА рдмрд╛рд░ рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк (рдХреНрд▓рд╛рдЗрдВрдЯ рдХреИрд╢ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП) рдореЗрдВ рд╕рдВрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕реЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреЗ рдЪрд░рдг рдореЗрдВ рднреА, рд╡реЗ рд╕рднреА рдореЗрдореЛрд░реА рдореЗрдВ рд╕рдЦреНрддреА рд╕реЗ рд╡рд░реНрдгрд╛рдиреБрдХреНрд░рдо рдореЗрдВ рд▓реЛрдб рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ (рдЬреИрд╕рд╛ рдХрд┐ рд╡реЗ рд╕реНрд╡рдпрдВ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИрдВ, рдФрд░ рдлрд╛рдЗрд▓реЗрдВ рдКрдкрд░ рд╕реЗ рдиреАрдЪреЗ рддрдХ - рдкрд╣рд▓реА рд╕реЗ рдЖрдЦрд┐рд░реА рддрдХ рдЗрд╕рдореЗрдВ рдПрдХрддреНрд░ рдХреА рдЬрд╛рддреА рд╣реИрдВ)ред рдпрд╣ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдРрдк рдХреА рдЬреЗрдПрд╕ рдлрд╝рд╛рдЗрд▓ рдкрд╣рд▓реЗ рд▓реЛрдб рдХреА рдЧрдИ рдереА, рдФрд░ рдЗрд╕рдХреЗ рдмрд╛рдж рдкреЙрд▓реАрдлрд╝рд┐рд▓реНрд╕ рдХреЗ рд╕рд╛рде core.min.js рдлрд╝рд╛рдЗрд▓ рдЖрдИ, рдФрд░ рдмрд╣реБрдд рдЕрдВрдд рдореЗрдВ рд╡реЗрдВрдбрд░ . min.js рдлрд╝рд╛рдЗрд▓ред рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдХрд╛рдлреА рд╕рд░рд▓рддрд╛ рд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ - рдмрд╣реБрдд рд╣реА рд╕рд╛рдорд╛рдиреНрдп рдЫрдБрдЯрд╛рдИ:


 scripts.sort((a, b) => { if(a.path.includes('core.min.js')) { return -1 } else if(a.path.includes('vendor.min.js')) { return 0 } return 1 }) 

PHP рдореЗрдВ, рдпрд╣ рд╕рдм рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдкреВрд░реНрд╡ рд▓рд┐рдЦрд┐рдд JS рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдкрде рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд░рд╛рдХреНрд╖рд╕реА рдЙрдкрд╕реНрдерд┐рддрд┐ рдереАред рд╕рд░рд▓ рд▓реЗрдХрд┐рди рдЕрд╡реНрдпрд╡рд╣рд╛рд░рд┐рдХред


NodeJS рд░реИрдо рдореЗрдВ рдЕрдкрдирд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд░рдЦрддрд╛ рд╣реИ


рдпрд╣ рдмрд╣реБрдд рдмрдбрд╝рд╛ рдкреНрд▓рд╕ рд╣реИред рдореЗрд░реЗ рд▓рд┐рдП рд╕рдм рдХреБрдЫ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рддрд╛рдХрд┐ рд╕рд░реНрд╡рд░ рдкрд░ рд╕рдорд╛рдирд╛рдВрддрд░ рдФрд░ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдПрдХ рджреВрд╕рд░реЗ рд╕реЗ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рд╛рдЗрдЯреЗрдВ рд╣реЛрдВ - рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд▓рд┐рдП рд╕рдВрд╕реНрдХрд░рдг рдФрд░ рдЙрддреНрдкрд╛рджрди рд╕рдВрд╕реНрдХрд░рдгред рдХрд▓реНрдкрдирд╛ рдХреАрдЬрд┐рдП рдХрд┐ рдореИрдВрдиреЗ рд╡рд┐рдХрд╛рд╕ рд╕рд╛рдЗрдЯ рдкрд░ PHP рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдХреБрдЫ рдмрджрд▓рд╛рд╡ рдХрд┐рдП рд╣реИрдВ рдФрд░ рдореБрдЭреЗ рдЗрди рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рд░реЛрд▓ рдЖрдЙрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕рд░реНрд╡рд░ рдХреЛ рд░реЛрдХрдиреЗ рдпрд╛ "рд╕реЙрд░реА, рдЯреЗрдХред рд╡рд░реНрдХ" рд╕реНрдЯрдм рд▓рдЧрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕ рд╕рдордп рдбреЗрд╡рд▓рдкрд░ рдлрд╝реЛрд▓реНрдбрд░ рд╕реЗ рдЙрддреНрдкрд╛рджрди рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдПрдБред рдпрд╣ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рдбрд╛рдЙрдирдЯрд╛рдЗрдо рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд░реВрдкрд╛рдВрддрд░рдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИред NodeJS рдореЗрдВ рдЗрди-рдореЗрдорд░реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рд▓рд╛рдн рдореЗрд░реЗ рд▓рд┐рдП рд╣реИ рдХрд┐ рдЗрдВрдЬрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╕рднреА рдкрд░рд┐рд╡рд░реНрддрди рдХрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рд╣реА рдЗрд╕реЗ рджреЛрдмрд╛рд░рд╛ рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рд╕рд╛рде рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдХреЙрдкреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╣реА рд╕рд░реНрд╡рд░ рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░реЗрдВред рдкреНрд░рдХреНрд░рд┐рдпрд╛ 1-2 рд╕реЗрдХрдВрдб рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд▓реЗрддреА рд╣реИ рдФрд░ рдбрд╛рдЙрдирдЯрд╛рдЗрдо рдХрд╛ рдХрд╛рд░рдг рдирд╣реАрдВ рдмрдирддреА рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, nginx рдореЗрдВ рдЙрд╕реА рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдк рдкрд╣рд▓реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕реЗ nginx -t рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╣реА service nginx reload рд╕рд╛рде рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рддреЗ рд╣реИрдВ


рдПрдХ NodeJS рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреНрд▓рд╕реНрдЯрд░рд┐рдВрдЧ


NodeJS рдореЗрдВ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЙрдкрдХрд░рдг рд╣реИ - pm2 рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкреНрд░рдмрдВрдзрдХ ред рдЖрдорддреМрд░ рдкрд░ рд╣рдо рдиреЛрдб рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреИрд╕реЗ рдЪрд▓рд╛рддреЗ рд╣реИрдВ? рд╣рдо рдХрдВрд╕реЛрд▓ рдореЗрдВ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ node index.js рд▓рд┐рдЦрддреЗ рд╣реИрдВред рдЬреИрд╕реЗ рд╣реА рд╣рдо рдХрдВрд╕реЛрд▓ рдХреЛ рдмрдВрдж рдХрд░рддреЗ рд╣реИрдВ, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдХрдо рд╕реЗ рдХрдо рдЙрдмрдВрдЯреВ рд╡рд╛рд▓реЗ рд╕рд░реНрд╡рд░ рдкрд░ рдпрд╣реА рд╣реЛрддрд╛ рд╣реИред рдЗрд╕рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╣рдореЗрд╢рд╛ рдЪрд╛рд▓реВ рд░рдЦреЗрдВ, рдмрд╕ рдЗрд╕реЗ pm2 рдореЗрдВ рд╕рд░рд▓ pm2 start index.js --name production рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝реЗрдВред рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдм рдирд╣реАрдВ рд╣реИред рдЙрдкрдХрд░рдг рдирд┐рдЧрд░рд╛рдиреА ( pm2 monit ) рдФрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреНрд▓рд╕реНрдЯрд░рд┐рдВрдЧ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред


рдЖрдЗрдП рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ PHP рдореЗрдВ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рдЖрдпреЛрдЬрди рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ http рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП nginx рд╣реИ рдФрд░ рд╣рдореЗрдВ PHP рдореЗрдВ рдЕрдиреБрд░реЛрдз рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЖрдк рдпрд╛ рддреЛ рд╕реАрдзреЗ рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз рдХреЗ рд╕рд╛рде рдПрдХ рдирдИ PHP рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реБрд░реВ рд╣реЛрдЧреА, рдФрд░ рдЬрдм рдпрд╣ рдкреВрд░рд╛ рд╣реЛ рдЬрд╛рдПрдЧрд╛, рддреЛ рдЗрд╕реЗ рдорд╛рд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╛ рдЖрдк рдПрдХ Fastcgi рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рд░ рдХреЛрдИ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреНрдпрд╛ рд╣реИ рдФрд░ рд╡рд┐рд╡рд░рдг рдореЗрдВ рдЬрд╛рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд┐рд░реНрдл рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореИрдВ рд╕реНрдкрд╖реНрдЯ рдХрд░ рджреВрдВрдЧрд╛ рдХрд┐ PHP-FPM рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдХреНрд╕рд░ Fastcgi рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдХрд╛рд░реНрдп рдХрдИ PHP рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рд╕реНрдкреЙрди рдХрд░рдирд╛ рд╣реИ рдЬреЛ рдХрд┐рд╕реА рднреА рд╕рдордп рдПрдХ рдирдпрд╛ рдЕрдиреБрд░реЛрдз рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдФрд░ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВред рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдиреБрдХрд╕рд╛рди рдХреНрдпрд╛ рд╣реИ?


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


NodeJS рдореЗрдВ рдореВрд▓рднреВрдд рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди 1.5 рдЧреАрдЧрд╛рдмрд╛рдЗрдЯ рд╕реЗ рдЕрдзрд┐рдХ рд░реИрдо рдХрд╛ рдЙрдкрднреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдХреЛрдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкреНрд░рддрд┐рдмрдВрдз рдирд╣реАрдВ рд╣реИрдВ, рдХреЗрд╡рд▓ рдПрдХ рд╕реНрдореГрддрд┐ рд╕реАрдорд╛ рд╣реИред рдпрд╣ рдЖрдкрдХреЛ рдпрдерд╛рд╕рдВрднрд╡ рд╣рд▓реНрдХреЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЙрдкрд▓рдмреНрдз рд╕реАрдкреАрдпреВ рд╕рдВрд╕рд╛рдзрди рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд╣рдо рдЬреЛ рдХреНрд▓рд╕реНрдЯрд░ рдЦрд░реАрдж рд╕рдХрддреЗ рд╣реИрдВ, рдЙрдирдХреА рд╕рдВрдЦреНрдпрд╛ рдХреА рдЧрдгрдирд╛ рдХрд░рдирд╛ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИред рдпрд╣ рдЕрдиреБрд╢рдВрд╕рд╛ рдХреА рдЬрд╛рддреА рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдХреЛрд░ рдкрд░ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдХреНрд▓рд╕реНрдЯрд░ рди рд▓рдЯрдХрд╛рдП рдЬрд╛рдПрдВ (рдмрд┐рд▓реНрдХреБрд▓ рдирдЧреАрдиреЗрдХреНрд╕ рдХреА рддрд░рд╣, рд╕реАрдкреАрдпреВ рдХреЛрд░ рдкреНрд░рддрд┐ рдПрдХ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ)ред


PM2 рдореЗрдВ рдХреНрд▓рд╕реНрдЯрд░рд┐рдВрдЧ


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


NodeJS рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕реНрд╡рд┐рд╕ рдЪрд╛рдХреВ рд╣реИ


рдЕрдм рдРрд╕реА рд╕реНрдерд┐рддрд┐ рд╣реИ рдЬрдм PHP рд╕рд╛рдЗрдЯреЛрдВ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рднрд╛рд╖рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддреА рд╣реИ, рдФрд░ рдкрд╛рдпрдерди рдЗрди рд╕рд╛рдЗрдЯреЛрдВ рдХреЛ рдХреНрд░реЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдХрд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред NodeJS 2 рдореЗрдВ 1 рд╣реИ, рдПрдХ рддрд░рдл рдПрдХ рдХрд╛рдВрдЯрд╛ рд╣реИ, рджреВрд╕рд░реА рддрд░рдл рдПрдХ рдЪрдореНрдордЪ рд╣реИред рдЖрдк рдПрдХ рд╣реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рднреАрддрд░ рдПрдХ рд╣реА рд╕рд░реНрд╡рд░ рдкрд░ рддреЗрдЬ рдФрд░ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдФрд░ рд╡реЗрдм рдХреНрд░реЙрд▓рд░ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред рд▓реБрднрд╛рд╡рдирд╛ рд▓рдЧрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдХреИрд╕реЗ рдорд╣рд╕реВрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЖрдк рдкреВрдЫреЗрдВ? Google рдиреЗ рд╕реНрд╡рдпрдВ рд╣реА рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдХреНрд░реЛрдорд┐рдпрдо API - Puppeteer рд╢реБрд░реВ рдХрд┐рдпрд╛ред рдЖрдк рд╣реЗрдбрд▓реЗрд╕ рдХреНрд░реЛрдо (рдмрд┐рдирд╛ рдпреВрдЬрд░ рдЗрдВрдЯрд░рдлреЗрд╕ рд╡рд╛рд▓рд╛ рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ - "рд╣реЗрдбрд▓реЗрд╕" рдХреНрд░реЛрдо рд▓реЙрдиреНрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ) рдФрд░ рдкреГрд╖реНрдареЛрдВ рдХреЛ рдХреНрд░реЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдПрдкреАрдЖрдИ рдХреА рд╡реНрдпрд╛рдкрдХ рд╕рдВрднрд╡ рдкрд╣реБрдВрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред Puppeteer рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдФрд░ рд╕реБрд▓рдн рддрд░реАрдХрд╛ ред


рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ VKontakte рд╕рдореВрд╣ рдореЗрдВ CIS рдХреЗ рд╢рд╣рд░реЛрдВ рд╕реЗ рд╡рд┐рднрд┐рдиреНрди рдЧрдВрддрд╡реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЫреВрдЯ рдФрд░ рд╡рд┐рд╢реЗрд╖ рдкреНрд░рд╕реНрддрд╛рд╡реЛрдВ рдХреА рдирд┐рдпрдорд┐рдд рдкреЛрд╕реНрдЯрд┐рдВрдЧ рд╣реИред рд╣рдо рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдореЛрдб рдореЗрдВ рдкреЛрд╕реНрдЯ рдХреЗ рд▓рд┐рдП рдЫрд╡рд┐рдпрд╛рдВ рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕реБрдВрджрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рд╕реБрдВрджрд░ рдЪрд┐рддреНрд░реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдореИрдВ рд╡рд┐рднрд┐рдиреНрди рдПрдкреАрдЖрдИ рдореЗрдВ рдмрд╛рдБрдзрдирд╛ рдФрд░ рджрд░реНрдЬрдиреЛрдВ рд╕рд╛рдЗрдЯреЛрдВ рдкрд░ рдЦрд╛рддреЗ рдмрдирд╛рдирд╛ рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд░рддрд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рд┐рдЦрд╛ рдЬреЛ Google рдХреНрд░реЛрдо рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдирдХрд▓ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд╕рд╛рдЗрдЯ рдкрд░ рд╕реНрдЯреЙрдХ рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдЪрд▓рддрд╛ рд╣реИ рдФрд░ рдХреАрд╡рд░реНрдб рджреНрд╡рд╛рд░рд╛ рдкрд╛рдИ рдЧрдИ рдЫрд╡рд┐ рдХреЛ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд░реВрдк рд╕реЗ рдЪреБрдирддрд╛ рд╣реИред рдореИрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдкрд╛рдпрдерди рдФрд░ рдмреНрдпреВрдЯреАрдлреБрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЕрдм рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред рдФрд░ Puppeteer рдХреА рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛ рдФрд░ рд▓рд╛рдн рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рдЖрд╕рд╛рдиреА рд╕реЗ рдПрд╕рдкреАрдП рд╕рд╛рдЗрдЯреЛрдВ рдХреЛ рднреА рдзреЛрдЦрд╛ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЕрдкрдиреЗ рдирд┐рдкрдЯрд╛рди рдореЗрдВ рдПрдХ рдкреВрд░реНрдг рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╣реИ рдЬреЛ рд╕рд╛рдЗрдЯреЛрдВ рдкрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдХреЛ рд╕рдордЭрддрд╛ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрд╣ рджрд░реНрдж рд╕реЗ рд╕рд░рд▓ рд╣реИ:


 const browser = await puppeteer.launch({headless: true, args:['--no-sandbox']}) const page = (await browser.pages())[0] await page.goto(`https://pixabay.com/photos/search/${imageKeyword}/?cat=buildings&orientation=horizontal`, { waitUntil: 'networkidle0' }) 

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


 var imagesLength = await page.evaluate(() => { var photos = document.querySelectorAll('.search_results > .item') if(photos.length > 0) { photos[Math.floor(Math.random() * photos.length)].className += ' --anomaly_selected' } return photos.length }) 

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


NodeJS рдореМрд▓рд┐рдХ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ


рдЗрд╕реЗ NodeJS рдФрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдПрдХ рдмрдбрд╝рд╛ рд▓рд╛рдн рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ ES2017 рдореЗрдВ async / рдкреНрд░рддреАрдХреНрд╖рд╛ рдХреЗ рдЖрдЧрдорди рдХреЗ рд╕рд╛рдеред PHP рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЬрд╣рд╛рдБ рдХреЛрдИ рднреА рдХреЙрд▓ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝ рдХреА рдЬрд╛рддреА рд╣реИред рдореИрдВ рдПрдХ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рджреВрдВрдЧрд╛ред рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ, рдЦреЛрдЬ рдЗрдВрдЬрди рдореЗрдВ, рд╕рд░реНрд╡рд░ рдкрд░ рдкреГрд╖реНрда рдЙрддреНрдкрдиреНрди рдХрд┐рдП рдЧрдП рдереЗ, рд▓реЗрдХрд┐рди рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкреГрд╖реНрда рдкрд░ рдХреБрдЫ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдерд╛, рдФрд░ рдЙрд╕ рд╕рдордп Yandex рдЕрднреА рддрдХ рд╡реЗрдмрд╕рд╛рдЗрдЯреЛрдВ рдкрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рдерд╛ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдПрдХ рд╕реНрдиреИрдкрд╢реЙрдЯ рддрдВрддреНрд░ (рдкреЗрдЬ рд╕реНрдиреИрдкрд╢реЙрдЯ) рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдерд╛ред рдкреНрд░реЗрдВрдбрд░реЗрдВрдбрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред рд╕реНрдиреИрдкрд╢реЙрдЯ рд╣рдорд╛рд░реЗ рд╕рд░реНрд╡рд░ рдкрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдП рдЧрдП рдереЗ рдФрд░ рдЕрдиреБрд░реЛрдз рдкрд░ рд░реЛрдмреЛрдЯ рдХреЛ рдЬрд╛рд░реА рдХрд┐рдП рдЧрдП рдереЗред рджреБрд╡рд┐рдзрд╛ рдпрд╣ рдереА рдХрд┐ рдпреЗ рдЪрд┐рддреНрд░ 3-5 рд╕реЗрдХрдВрдб рдХреЗ рднреАрддрд░ рдЙрддреНрдкрдиреНрди рд╣реБрдП рдереЗ, рдЬреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реИ рдФрд░ рдЦреЛрдЬ рдкрд░рд┐рдгрд╛рдореЛрдВ рдореЗрдВ рд╕рд╛рдЗрдЯ рдХреА рд░реИрдВрдХрд┐рдВрдЧ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕рд░рд▓ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛: рдЬрдм рд░реЛрдмреЛрдЯ рдХреБрдЫ рдкреГрд╖реНрда рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдПрдХ рд╕реНрдиреИрдкрд╢реЙрдЯ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реИ, рддреЛ рд╣рдо рдЗрд╕реЗ рдореМрдЬреВрджрд╛ рд╕реНрдиреИрдкрд╢реЙрдЯ рджреЗрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рд╣рдо рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рдПрдХ рдирдпрд╛ рд╕реНрдиреИрдкрд╢реЙрдЯ рдмрдирд╛рдиреЗ рдФрд░ рдЗрд╕реЗ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдСрдкрд░реЗрд╢рди рдХрд░рддреЗ рд╣реИрдВред рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрдкрд▓рдмреНрдз рд╣реИред рдпрд╣ PHP рдореЗрдВ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:


 exec('/usr/bin/php ' . __DIR__ . '/snapshot.php -a ' . $affiliation_type . ' -l ' . urlencode($full_uri) . ' > /dev/null 2>/dev/null &'); 

рдРрд╕рд╛ рдХрднреА рди рдХрд░реЗрдВред
NodeJS рдореЗрдВ, рдпрд╣ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:


 async function saveSnapshot() { getSnapshot().then((res) => { db.saveSnapshot().then((status) => { if(status.err) console.error(err) }) }) } /** *     await * ..    resolve()   */ saveSnapshot() 

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


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


рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреНрд╡реЗрд░реА "рдлреНрд▓рд╛рдЗрдЯ рдореЙрд╕реНрдХреЛ рд╕реЗрдВрдЯ рдкреАрдЯрд░реНрд╕рдмрд░реНрдЧ" рдХреЗ рд▓рд┐рдП рдПрдХ рдкреЗрдЬ рдкрддрд╛ / рдЯрд┐рдХрдЯ / рдореЙрд╕реНрдХреЛ / рд╕рдВрдд-рдкреАрдЯрд░рдмрд░реНрдЧ / рдХреЗ рд╕рд╛рде рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдЗрд╕реЗ рдбреЗрдЯрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:


  1. рдЪрд╛рд▓реВ рдорд╛рд╣ рдХреЗ рд▓рд┐рдП рдЗрд╕ рджрд┐рд╢рд╛ рдореЗрдВ рдПрдпрд░рд▓рд╛рдЗрди рдХреА рдХреАрдорддреЗрдВ
  2. рдЗрд╕ рд╡рд░реНрд╖ рдХреЗ рд▓рд┐рдП рдЗрд╕ рджрд┐рд╢рд╛ рдореЗрдВ рдПрдпрд░рд▓рд╛рдЗрди рдХреА рдХреАрдорддреЗрдВ (рдЕрдЧрд▓реЗ 12 рдорд╣реАрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреНрдпреЗрдХ рдорд╛рд╣ рдХреА рдФрд╕рдд рдХреАрдордд)
  3. рдЗрд╕ рджрд┐рд╢рд╛ рдореЗрдВ рдЕрдиреБрд╕реВрдЪреА рдЙрдбрд╝рд╛рдиреЗрдВ
  4. рдкреНрд░реЗрд╖рдг рдХреЗ рд╢рд╣рд░ рд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рдЧрдВрддрд╡реНрдп - рдорд╛рд╕реНрдХреЛ рд╕реЗ (рд▓рд┐рдВрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП)
  5. рдЖрдЧрдорди рдХреЗ рд╢рд╣рд░ рд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рдЧрдВрддрд╡реНрдп рд╕реЗрдВрдЯ рдкреАрдЯрд░реНрд╕рдмрд░реНрдЧ рд╕реЗ рд╣реИрдВ (рд▓рд┐рдВрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП)

PHP рдореЗрдВ, рдЗрди рд╕рднреА рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝ рдХрд┐рдпрд╛ рдЧрдпрд╛ - рдПрдХ рдХреЗ рдмрд╛рдж рдПрдХред рдЕрдиреБрд░реЛрдз рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдФрд╕рдд рдПрдкреАрдЖрдИ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рдордп 150-200 рдорд┐рд▓реАрд╕реЗрдХрдВрдб рд╣реИред рд╣рдо 200 рдХреЛ 5 рд╕реЗ рдЧреБрдгрд╛ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдФрд╕рддрди, рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рд╕рд░реНрд╡рд░ рдХреЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рджреВрд╕рд░рд╛ред NodeJS рдореЗрдВ Promise.all рдирд╛рдордХ рдПрдХ рдорд╣рд╛рди рдХрд╛рд░реНрдп рд╣реИ, рдЬреЛ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рд╕рднреА рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкрд░рд┐рдгрд╛рдо рдПрдХ-рдПрдХ рдХрд░рдХреЗ рд▓рд┐рдЦрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП рдирд┐рд╖реНрдкрд╛рджрди рдХреЛрдб рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:


 var [montlyPrices, yearlyPrices, flightsSchedule, originPopulars, destPopulars] = await Promise.all([ getMontlyPrices(), getYearlyPrices(), getFlightSchedule(), getOriginPopulars(), getDestPopulars() ]) 

рдФрд░ рд╣рдо 200-300 рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдореЗрдВ рд╕рднреА рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рдкреЗрдЬ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдкреАрдврд╝реА рдХрд╛ рд╕рдордп 1-1.5 рд╕реЗрдХрдВрдб рд╕реЗ рдШрдЯрд╛рдХрд░ ~ 500 рдорд┐рд▓реАрд╕реЗрдХрдВрдб рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред


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


PHP рд╕реЗ NodeJS рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рд╕реЗ рдореБрдЭреЗ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рдЕрдзрд┐рдХ рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓реА, рд╡рд╛рджреЛрдВ рдФрд░ async / рдЗрдВрддрдЬрд╛рд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╕реАрдЦреЗрдВред рдЗрдВрдЬрди рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦреЗ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдкреГрд╖реНрда рд▓реЛрдбрд┐рдВрдЧ рдЧрддрд┐ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдЗрдВрдЬрди рдореЗрдВ рджрд┐рдЦрд╛рдП рдЧрдП рдкрд░рд┐рдгрд╛рдореЛрдВ рд╕реЗ рдирд╛рдЯрдХреАрдп рд░реВрдк рд╕реЗ рднрд┐рдиреНрди рдерд╛ред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо рдпрд╣ рднреА рдмрд╛рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ NodeJS рдореЗрдВ рдХреИрд╢ (рд░реЗрдбрд┐рд╕) рдФрд░ рдкреАрдЬреА-рд╡рд╛рджреЗ (PostgreSQL) рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдореЗрдордХреЗрдЪреНрдб рдФрд░ php-pgsql рдХреЗ рд╕рд╛рде рдЙрдирдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд░рд▓ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд▓реЗрдЦ рдХрд╛рдлреА рдмрдбрд╝рд╛ рдирд┐рдХрд▓рд╛ред рдФрд░ рд▓реЗрдЦрди рдХреЗ рд▓рд┐рдП рдореЗрд░реА "рдкреНрд░рддрд┐рднрд╛" рдХреЛ рдЬрд╛рдирддреЗ рд╣реБрдП, рд╡рд╣ рднреА рдЦрд░рд╛рдм рд░реВрдк рд╕реЗ рд╕рдВрд░рдЪрд┐рдд рд╣реЛ рдЧрдИред рдЗрд╕ рд▓реЗрдЦ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдЙрди рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХрд╛ рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдирд╛ рд╣реИ рдЬреЛ рдЕрднреА рднреА PHP рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ NodeJS рдХреА рдкреНрд░рд╕рдиреНрдирддрд╛ рдФрд░ рдЙрд╕ рдкрд░ рд╡реЗрдм-рдЖрдзрд╛рд░рд┐рдд рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ рдЬреЛ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬреАрд╡рди рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдЬреЛ рдХрднреА PHP рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рд╡рд░реАрдпрддрд╛рдУрдВ рдХреЗ рдХрд╛рд░рдг рдЗрд╕рдХрд╛ рдорд╛рд▓рд┐рдХ рджреВрд╕рд░реЗ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдо рдкрд░ рдЧрдпрд╛ред


рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕ рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╡реНрдпрдХреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рдФрд░ рдЕрдзрд┐рдХ рдпрд╛ рдХрдо рд╕рдВрд░рдЪрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ред рдХрдо рд╕реЗ рдХрдо рдореИрдВрдиреЗ рдХреЛрд╢рд┐рд╢ рдХреА :)


рдХреЛрдИ рднреА рдЯрд┐рдкреНрдкрдгреА рд▓рд┐рдЦреЗрдВ - рдЕрдиреБрдХреВрд▓ рдпрд╛ рдХреНрд░реЛрдзрд┐рддред рдореИрдВ рдХрд┐рд╕реА рднреА рд░рдЪрдирд╛рддреНрдордХ рдХрд╛ рдЬрд╡рд╛рдм рджреВрдВрдЧрд╛ред

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


All Articles