рдкреНрд░рд╕рд┐рджреНрдзрд┐ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ, рдпрд╛ рдПрдХ рд░реЛрдмреЛрдЯ рдФрд░ ... рджреВрд╕рд░реЛрдВ рдХреЛ рдХреИрд╕реЗ рдЙрддреНрддреЗрдЬрд┐рдд рдХрд░реЗрдВ



рдПрдХ рдмрд╛рд░ рдХреА рдмрд╛рдд рд╣реИ, рдПрдХ рджреВрд░ рдХреЗ рд╕реНрдЯреЛрд░ рдХреЗ рд╕рд╛рдордиреЗ рдПрдХ рдЧрд░рдорд╛рдЧрд░рдо рдмрд╛рддрдЪреАрдд рд╣реБрдИред
NB: -         ? 

GURU : - ┬л┬╗ . . . , ...

 NB: -      ,     ? 

GURU : - google yandex , . . , .

 NB: -       ? 

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

рдмреЗрд╢рдХ, рдЧреБрд░реВ рдХреЛ рдкрддрд╛ рдерд╛ рдХрд┐ рдПрдХ рдЦреЛрдЬ рдХреНрд╡реЗрд░реА (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╢рдмреНрдж: рдкреНрд░реЙрдХреНрд╕реА) рд╡рд╛рдВрдЫрд┐рдд рдкрддреЗ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЬрд▓реНрдж рд╣реА рдПрдирдмреА рдХрд╛ рдиреЗрддреГрддреНрд╡ рдХрд░реЗрдЧреА: рдкреЛрд░реНрдЯ рд╕реВрдЪреАред рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдмрд╛рдж, рдПрдирдмреА , рдмрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд▓реНрджреА рд╕реЗ рд╕рдордЭ рдЬрд╛рдПрдЧрд╛:

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


рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдХреИрд╕реЗ рд╕реБрдзрд╛рд░ (рдФрд░ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ) рдХрд╛ рдорддрд▓рдм рд╣реИ
( ZennoPoster , рдЖрджрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдорд╛рд▓рд┐рдХрд╛рдирд╛ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ ...)
"рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдкрдпреБрдХреНрдд" рдкреНрд░реЙрдХреНрд╕реА рдХреА рдПрдХ рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЙрдкрдХрд░рдг рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВ рдФрд░ рдкреНрд░рдЪрд╛рд░рд┐рдд (рд╕реНрд╡рдЪрд╛рд▓рд┐рдд) рдпрд╛рддреНрд░рд╛рдУрдВ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
Chrome рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд╛рдЗрдЯред

рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реБрдП, рдЖрдкрдХреЛ рдПрдХ рддреИрдпрд╛рд░ рдЙрдкрдХрд░рдг рдорд┐рд▓реЗрдЧрд╛ рдЬреЛ рдЖрдкрдХреЛ рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛:

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

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


рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдЖрдк рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЖрд░реЗрдЦ рдиреАрдЪреЗ рд╕реНрдХреНрд░реЙрд▓ рдХрд░реЗрдВ, рдореИрдВ рдХреБрдЫ рд╢рдмреНрдж рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рдпрд╣ рд╕рд╛рдордЧреНрд░реА рдХреНрдпреЛрдВ рдФрд░ рдХрд┐рд╕рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдХреА рдЧрдИ рд╣реИред

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

рдкрд╛рда рддрдм рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ рдЬрдм рдЖрдк рддрддреНрдХрд╛рд▓ рдмрд┐рд▓реНрдбрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рдбреЙрдХрд░ рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗред рдпрд╛ рдпрджрд┐ рдЖрдк рд╕рд┐рд░реНрдл рд╕реЗрд▓реЗрдирд┐рдпрдо рд╕рд░реНрд╡рд░ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ рдФрд░ HTTPx рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреА рд╕рд╛рдордЧреНрд░реА / рдкреНрд░рдХрдЯреАрдХрд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдореЗрдВ рд╣реИрдВред
"рддреБрд░рдВрдд рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ" рдХреЗ рд▓рд┐рдП, рд╡рд┐рдЪрд╛рд░рдкреВрд░реНрд╡рдХ рдпрд╣ рд╕рдм рдкрдврд╝рдирд╛ рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рдирд╣реАрдВ рд╣реИред рдХреЛрдб рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИред
рддреИрдпрд╛рд░ рдЯреВрд▓ рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реАрдзреЗ рдЬрд╛рдПрдВред рд╕реЗрдЯрдЕрдк рдореЗрдВ 20 рдорд┐рдирдЯ рд╕реЗ рдХрдо рд╕рдордп рд▓рдЧрддрд╛ рд╣реИред
рдореИрдиреБрдЕрд▓ рдорд╛рдирддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ Ubuntu 18.04 рд╕реНрдерд╛рдкрд┐рдд рдХреЗ рд╕рд╛рде 2 рдорд╢реАрдиреЗрдВ рд╣реИрдВред
рдПрдХ рдЗрдВрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ ( рдбреЙрдХрдЯрд░ ) рдХреЗ рд▓рд┐рдП, рджреВрд╕рд░рд╛ рдкреНрд░реЛрд╕реЗрд╕ рдХрдВрдЯреНрд░реЛрд▓ ( рдкреНрд░рдХреНрд░рд┐рдпрд╛ ) рдХреЗ рд▓рд┐рдПред

рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреИрдХреЗрдЬ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА docker рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рд╣реИрдВ:
git, docker, docker-compose

рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреИрдХреЗрдЬ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕реНрдерд╛рдкрд┐рдд рд╣реИрдВ:
git, php-common, php-cli, php-curl, php-zip, php-memcached, рдХрдВрдкреЛрдЬрд░
рдпрджрд┐ рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рдЖрдкрдХреЗ рдХреЛрдИ рдкреНрд░рд╢реНрди рд╣реИрдВ, рддреЛ рдореИрдВ рдкреВрд░реА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдкрдврд╝рдиреЗ рдореЗрдВ 15 рдорд┐рдирдЯ рдЦрд░реНрдЪ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВред

рдбрд╛рдХ рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗрд╡рд╛рд▓рд╛ рдордЬрд╝рджреВрд░

 #    root-. # ,     TCP-: # 11300, 11211, 4444, 5930, 8080, 8081, 8082, 8083 #        # " root-"    git clone \ https://oauth2:YRGzV8Ktx2ztoZg_oZZL@git.ituse.ru/deploy/esb-infrastructure.git cd esb-infrastructure docker-compose up --build -d #      3     #   . #       web-. 

рдкреНрд░рдХреНрд░рд┐рдпрд╛

 #      . #      process-   , #     -  php- git clone \ https://oauth2:YRGzV8Ktx2ztoZg_oZZL@git.ituse.ru/deploy/clicker-noserver.git cd clicker-noserver composer update #  .       "XXXXXXXX" mv app/settings.php.dist app/settings.php #   . gnome-terminal \ --tab -e 'bash -c "php app/src/Process/noserver/singleProcess.php curl"' \ --tab -e 'bash -c "php app/src/Process/noserver/singleProcess.php timezone"' \ --tab -e 'bash -c "php app/src/Process/noserver/singleProcess.php whoer"' #  . ,     , #  : - log/list.proxy php app/src/Utils/givethejob.php ./log/list.proxy 

рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ, рд╡реЗрдм-рдкреИрдирд▓ (http: // ip-address-docker-Machines: 8080) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдпрд╣ рджреЗрдЦрдирд╛ред
рдкрд░рд┐рдгрд╛рдо рд╕реНрдерд┐рдд рдХрддрд╛рд░ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛ред

рдХреБрдЪрд▓рдирд╛ рдФрд░ рдпреЛрдЬрдирд╛ рдмрдирд╛рдирд╛




рдКрдкрд░ рджрд┐рдП рдЧрдП рдЖрд░реЗрдЦ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЪрд░рдгреЛрдВ рдХреЗ рдЕрдиреБрдХреНрд░рдо, рдкреНрд░рддреНрдпреЗрдХ рдЪрд░рдг рдХреЗ рд▓рд┐рдП рдЕрдкреЗрдХреНрд╖рд┐рдд рдкрд░рд┐рдгрд╛рдо рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рднрд╛рдЧ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рд╡рд┐рд╡рд░рдг (рд╡рд┐рд╡рд░рдг: рдХрд╛рд░реНрдп 2 , рдХрд╛рд░реНрдп 3 , рдХрд╛рд░реНрдп 4,5,6 ) рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред

рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕рдм рдХреБрдЫ рджреЛ Ubuntu 18.04 рдорд╢реАрдиреЛрдВ рдкрд░ рд╣реЛрддрд╛ рд╣реИред рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рджреВрд╕рд░реА рдУрд░, рдХрдИ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдБрдЪреЗ рдХреЗ рдХрдВрдЯреЗрдирд░ рдЪрд▓ рд░рд╣реЗ рд╣реИрдВред

рдмрд╣рд╛рдиреЗ рдФрд░ рдЕрд╕рдлрд▓рддрд╛


рд╕рднреА рдкреИрдХреЗрдЬ рдХреЛрдб рдореЗрдВ рддреАрди рднрд╛рдЧ рд╣реЛрддреЗ рд╣реИрдВред
рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдореЗрд░рд╛ рдирд╣реАрдВ рд╣реИ (рдореИрдВ рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдПрдХ рд╕рд╛рдл рдФрд░ рд╕реБрдВрджрд░ рдХреЛрдб рд╣реИ)ред рдЗрд╕ рдХреЛрдб рдХрд╛ рд╕реНрд░реЛрдд packagist.org рд╣реИ ред

рдореИрдВрдиреЗ рдЦреБрдж рдПрдХ рдФрд░ рд▓рд┐рдЦрд╛ рд╣реИ, рдореИрдВрдиреЗ рдЗрд╕реЗ рд╕рдордЭрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ рдХреЛрдб рдХреЗ рдЗрд╕ рд╣рд┐рд╕реНрд╕реЗ рдореЗрдВ рд▓рдЧрднрдЧ рдПрдХ рд╕рдкреНрддрд╛рд╣ рд╕рдорд░реНрдкрд┐рдд рдХрд┐рдпрд╛ред

рдмрд╛рдХреА рдПрдХ "рдореБрд╢реНрдХрд┐рд▓ рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рд╡рд┐рд░рд╛рд╕рдд" рд╣реИред рдХреЛрдб рдХрд╛ рдпрд╣ рд╣рд┐рд╕реНрд╕рд╛ рдХрд╛рдлреА рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЙрд╕ рд╕рдордп рднреА рд╢рд╛рдорд┐рд▓ рд╣реИ рдЬрдм рдореЗрд░реЗ рдкрд╛рд╕ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЗрдВ рдмрд╣реБрдд рдХреМрд╢рд▓ рдирд╣реАрдВ рдерд╛ред

рдпрд╣ рдареАрдХ рдореЗрд░реЗ GitLab рдкрд░ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рд╕реНрдерд╛рди рдФрд░ рдореЗрд░реЗ Satis рдкрд░ рд╕рдВрдХреБрд▓ рдХрд╛ рдХрд╛рд░рдг рд╣реИред GitHub.com рдФрд░ packagist.org рдкрд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП , рдЗрд╕ рдХреЛрдб рдХреЛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдФрд░ рдЕрдзрд┐рдХ рдЧрд╣рди рдкреНрд░рд▓реЗрдЦрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

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

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдХреЛрдб рдХреЛ рдкреБрди: рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рддреЗ рд╕рдордп, рдореБрдЭреЗ рдпрд╛ рдЗрд╕ рд▓реЗрдЦ рдХрд╛ рд▓рд┐рдВрдХ рдкреЛрд╕реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдВ рдЖрдкрдХрд╛ рдЖрднрд╛рд░реА рд░рд╣реВрдВрдЧрд╛ред

рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛


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

  • рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЛ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕реЗ рджреВрд╕рд░реЛрдВ рдХреЗ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХрд╛рд░реНрдп рд╢рд╛рдорд┐рд▓ рд╣реИрдВ;
  • рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЛ рд╕реНрдЯрдбрдЖрдЙрдЯ (рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рддрд░реАрдХреЗ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж) рдореЗрдВ рд╡рд╛рдкрд╕ рдХрд░ рд╕рдХрддреА рд╣реИред

рдЗрд╕ рд╕рд┐рджреНрдзрд╛рдВрдд рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдПрдХ рд╕рдорд╛рдзрд╛рди рдЖрдкрдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЪрд░рдг рдХреЗ рд▓рд┐рдП рд░рдирд┐рдВрдЧ рдЯрд╛рд╕реНрдХ рд╣реИрдВрдбрд▓рд░ (рд╢реНрд░рдорд┐рдХ) рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдЪрд░рдг рдХреЗ рд▓рд┐рдП рд╢реНрд░рдорд┐рдХреЛрдВ рдХреА рдПрдХ рдЕрд▓рдЧ рд╕рдВрдЦреНрдпрд╛ рдкрд┐рдЫрд▓реЗ рдЪрд░рдгреЛрдВ рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХрд╛рд░реНрдпреЛрдВ рдХреА рд▓рдВрдмрд╛рдИ рдХреЗ рдХрд╛рд░рдг рдЪрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП "0" рдбрд╛рдЙрдирдЯрд╛рдЗрдо рдХрд╛ рдиреЗрддреГрддреНрд╡ рдХрд░реЗрдЧреАред

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

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

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

рдореИрд╕реЗрдЬрд┐рдВрдЧ рдХрддрд╛рд░ред рдПрдордХреНрдпреВ рдФрд░ рдИрдПрд╕рдмреА


рдирд┐рдЪрд▓реЗ рд╕реНрддрд░ ( рдПрдордХреНрдпреВ ) рдХреЗ рд░реВрдк рдореЗрдВ рд╣рдо рдмреАрдирд╕реНрдЯреЙрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдЫреЛрдЯреЗ, рд╣рд▓реНрдХреЗ, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди-рдореБрдХреНрдд, рдбрд┐рдм рдкреИрдХреЗрдЬ рдореЗрдВ рдФрд░ рдбреЙрдХрдЯрд░ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИ, рдЬреЛ рдПрдХ рдЕрд╕рдВрдЧрдд рдХрдареЛрд░ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рд╣реИред рддрд╛рд░реНрдХрд┐рдХ рд╕реНрддрд░ ( ESB ) PHP рдореЗрдВ рдХреЛрдб рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдЧрд╛ред

рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рджреЛ рд╡рд░реНрдЧреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред esbTask рдФрд░ nextStepWorker ред

esbTask

 class esbTask //   ,     { // immutable-; // "" (   ESB-),  payload //    //     "" .... } 

рдЗрд╕ рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдЪрд░рдгреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ "рдкрддреЗ" рдХреЛ рдмрддрд╛рддрд╛ рд╣реИред ESB рдЕрд╡рдзрд╛рд░рдгрд╛ рдХрдИ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ / рдкреНрд░рддрд┐рдорд╛рдиреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреА рд╣реИред рдЙрдирдореЗрдВ рд╕реЗ рджреЛ рдЕрд▓рдЧ рд╕реЗ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИрдВ:

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

рдХрддрд╛рд░ рдХреА рд╡рд╕реНрддреБ рдХреЛ json рдореЗрдВ рджрд░реНрд╢рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдпрд╣рд╛рдБ рдЫрд┐рдкрд╛ рд╣реБрдЖ рд╣реИ ...
 // json- esbTask { //    (   esbTask) "_type":"App\\\\rebean\\\\payloads\\\\ESBtaskQueue", //  "task":"task:queue@XXX.XXX.XXX.XXX:11300", //    () "replyto":[ "othertask1:nextqueue1@yyy.XXX.XXX.XXX:11300", "othertask2:nextqueue2", "othertask3:nextqueue3", ], //    () "onerror":[ "error:errorsstep@zzz.XXX.XXX.XXX:11300", "error:errorsstep1", "error:errorsstep2", "error:errorsstep3" ], //     () "onstop":[ "stop:stopstep@kkk.XXX.XXX.XXX:11300", "stop:stopstep1", "stop:stopstep2", "stop:stopstep3" ], //   "payload":{ .... }, //   ... () "till":[ .... ], //     ... () //        // -  (LINUX-TimeStamp) "since":[ 1540073089.8833, ], // -     "points":1, //  .     "groupid":"" } 


nextStepWorker

рдХрддрд╛рд░ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд╡рд╛рд▓рд╛ рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрджреЗрд╢ рдЙрд╕ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХрд╛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реЗрдЯ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

 class nextStepWorker extends workerConstructor { //       //     esbTask //    () //    MQ- (beanstalkd) //     (Memcached) //     (MySQL) // : -  (  - ); -    stop-; -      (log, event, mq) .... } 

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

рд╕рдорд╕реНрдпрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╣реИ:

  1. рдПрд╕реНрдХрдЯрд╕реНрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ рдФрд░ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЛ рдЪрд▓рд╛рдПрдВ;
  2. рдкреЗрд▓реЛрдб рдореЗрдВ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдХреЗ рддрд░реНрдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВ;
  3. рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рдкреВрд░рд╛ рдХрд░реЗрдВ (рдЖрдкрд╛рддрдХрд╛рд▓реАрди рдпрд╛ рд╕рд╛рдорд╛рдиреНрдп - рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛)ред

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

рдПрдХ рдмрд╛рд░ рдХрд░реЛред рдЙрдкрд▓рдмреНрдзрддрд╛ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ


рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдХрд┐рд╕реА рднреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдмрдирд╛рдирд╛ рдПрдХ рд╡рд┐рдзрд┐ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИред рд╕рдорд╕реНрдпрд╛ 2 рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг (рд╕рд░рд▓реАрдХреГрдд) рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:

 // app/src/Process/worker/curlChecker.php .... class curlChecker extends nextStepWorker { const PROXY_INFO = 'https://api.ipfy.me?format=json&geo=true'; const PROXY_TIMEOUT = '40'; const COMMAND = "curl -m %s -Lx http://%s:%s '%s'"; public function logic() { //    .  ..   payload extract($this->context()); //  defaults    payload  $curltimeout = $curltimeout ?? self::PROXY_TIMEOUT; $curlchecker = $curlchecker ?? self::PROXY_INFO; //     $line = sprintf( static::COMMAND, $curltimeout, $host, $port, $curlchecker ); exec($line, $info); //      // ( ,  stop-) $info = arrays::valid_json(implode('', info)); if (empty($info)) throw new \Exception("Bad proxy: $host:$port!", static::STATUS_STOP); //    payload $this->enrich(['info']) ->sets(compact('info')); } } 

рдХреЛрдб рдХреА рдХреБрдЫ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдФрд░ рд╕рдм рдХреБрдЫ рдЕрдЧрд▓реЗ рдЪрд░рдг рдХреЗ рд▓рд┐рдП "рд╕реЗрдХрдВрдб" рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЯрд╛рдЗрдордЬреЛрди рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВред TimeZoneDB рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рд╣реИ ...


рдЖрдиреЗ рд╡рд╛рд▓реЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рдЧрд╣рд░рд╛рдИ рд╕реЗ рдЬрд╛рдВрдЪ рдореЗрдВ рдЙрд╕ рд╕рдордп рдХреЗ рд╕рд╛рде рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╡рд┐рдВрдбреЛ рд╕рдордп рдХрд╛ рдорд┐рд▓рд╛рди рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИ рдЬрд┐рд╕ рд╕рдордп рдЕрдиреБрд░реЛрдз рд╕реНрд░реЛрдд рдЖрдИрдкреА рдкрддрд╛ рдореМрдЬреВрдж рд╣реИред

рдХрд╛рдЙрдВрдЯрд░реЛрдВ рд╕реЗ рд╕рдВрджреЗрд╣ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рд╕реНрдерд╛рдиреАрдп рдкреНрд░реЙрдХреНрд╕реА рд╕рдордп рдХреЛ рдЬрд╛рдирдирд╛ рд╣реЛрдЧрд╛ред

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

рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓реАрдХреГрдд рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ ( рдЯрд╛рд╕реНрдХ 3 ) рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкрд┐рдЫрд▓реЗ рдПрдХ рдХреЗ рд╕рдорд╛рди рд╣реЛрдЧрд╛ред рдПрдХрдорд╛рддреНрд░ рдЕрдВрддрд░ рдЕрдиреБрд░реЛрдз URL рд╣реИред рдЖрдк рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкреВрд░реНрдг рд╕рдВрд╕реНрдХрд░рдг рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ:
// рдРрдк / src / рдкреНрд░рдХреНрд░рд┐рдпрд╛ / рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ / timeZone.php

рдереЛрдбрд╝реА рдЕрд╡рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ


рд╡рд░реНрдгрд┐рдд рдмреАрдирд╕реНрдЯреЙрдХ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдорд╛рд░реЗ рдЙрдкрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА:

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

рдЗрди рд╕рднреА рдХреА рддреНрд╡рд░рд┐рдд рддреИрдирд╛рддреА рдХреЗ рд▓рд┐рдП, рдбреЙрдХрд░ ( рдЙрдмрдВрдЯреВ рдкрд░ рдХреИрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ ) рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред

рдФрд░ рдЙрд╕рдХреЗ рд▓рд┐рдП "рдСрд░реНрдХреЗрд╕реНрдЯреНрд░реЗрдЯрд░" docker- рд░рдЪрдирд╛ (рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рд▓рд┐рдП рдЖрджреЗрд╢) рд╣реИ ...
 sudo apt-get -y update sudo apt-get -y install docker-compose 


рдпреЗ рдЙрдкрдХрд░рдг рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдП рдЧрдП (рдХрд┐рд╕реА рдХреЗ рджреНрд╡рд╛рд░рд╛ рдкрд╣рд▓реЗ) рд╕рд░реНрд╡рд░ / рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдореВрд▓ рдУрдПрд╕ рдХреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ "рдХрдВрдЯреЗрдирд░реЛрдВ" рдореЗрдВ рдЪрд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЗрд╕ рдпрд╛ рдЗрд╕ рд▓реЗрдЦ рдХрд╛ рд╕рдВрджрд░реНрдн рджреЗрдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВред

рдЗрд╕рд▓рд┐рдП ...

рдХрдВрд╕реЛрд▓ рдореЗрдВ рдЗрдВрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдХрдИ рдХрдорд╛рдВрдб рдХреА рдЬрд░реВрд░рдд рд╣реЛрддреА рд╣реИ:

 #   ,    docker- #     (   ) #    sudo -s git clone \ https://oauth2:YRGzV8Ktx2ztoZg_oZZL@git.ituse.ru/deploy/esb-infrastructure.git \ panels cd panels docker-compose up --build -d #   . 

XXX.XXX.XXX.XXX рдкрддреЗ рдХреЗ рд╕рд╛рде рдорд╢реАрди рдкрд░ рдХрдорд╛рдВрдб рдХреЗ рд╕рдлрд▓ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдкред
рдЖрдкрдХреЛ рд╕реЗрд╡рд╛рдУрдВ рдХрд╛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реЗрдЯ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧрд╛:
- XXX.XXX.XXX.XXX:11300 - beanstalkd
- XXX.XXX.XXX.XXX:11211 - Memcached
- XXX.XXX.XXX.XXX-00-00444 - рд╕реЗрд▓реЗрдирд┐рдпрдо рд╕рд░реНрд╡рд░
- XXX.XXX.XXX.XXX:5930 - рдХреНрд░реЛрдо рдореЗрдВ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ рдЗрд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП VNC рд╕рд░реНрд╡рд░
- XXX.XXX.XXX.XXX:8081 - рдореЗрдореНрдХреЗрдб рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд░ рдХреЗ рд▓рд┐рдП рд╡реЗрдм рдкреИрдирд▓ (рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ: рдкрд╛рд╕)
- XXX.XXX.XXX.XXX:8082 - рдмреАрдирд╕реНрдЯреЙрдХ рдХреЗ рд╕рд╛рде рд╕рдВрд╡рд╛рдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реЗрдм рдкреИрдирд▓
- XXX.XXX.XXX.XXX:8083 - рд╡реАрдПрдирд╕реА рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд░ рдХреЗ рд▓рд┐рдП рд╡реЗрдм рдкреИрдирд▓ (рдкрд╛рд╕рд╡рд░реНрдб: рд░рд╣рд╕реНрдп)
- XXX.XXX.XXX.XXX:8080 - рд╕рд╛рдорд╛рдиреНрдп рд╡реЗрдм рдкреИрдирд▓

"рджреЗрдЦреЗрдВ рдХрд┐ рдХреНрдпрд╛ рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИ", "рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдкрд╣реБрдВрдЪреЗрдВ", "рдЗрдВрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдХреЛ рд░реЛрдХреЗрдВ" рд╕реНрдкреЙрдЗрд▓рд░ рдореЗрдВ рдХрдорд╛рдВрдб рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
 #   ,    docker-, #    ..../panels/ #    docker-compose ps # Name Command State Ports # ------------------------------------------------------------------------------------------------------------------------ # beanstalkd /usr/bin/beanstalkd Up 0.0.0.0:11300->11300/tcp # chrome start-cron Up 0.0.0.0:4444->4444/tcp, 0.0.0.0:5930->5900/tcp # memcached docker-entrypoint.sh memcached Up 0.0.0.0:11211->11211/tcp # nginx docker-php-entrypoint /sta ... Up 0.0.0.0:8443->443/tcp, 0.0.0.0:8080->80/tcp, # 0.0.0.0:8082->8082/tcp, 0.0.0.0:8083->8083/tcp, 9000/tcp # vnc /usr/bin/supervisord -c /e ... Up 0.0.0.0:8081->8081/tcp #       chrome docker exec -ti chrome /bin/bash #       docker-compose stop && docker rm $(docker ps -a -q) 

рдХрд╛рд░реНрдп 4,5,6 - рдПрдХ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдореЗрдВ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░реЗрдВ


рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХреБрдЪрд▓рдиреЗ рдкрд░ рдзреНрдпрд╛рди рджрд┐рдпрд╛ ( рдКрдкрд░ рдЪрд┐рддреНрд░ ), рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ рдХрд┐ рд╢реЗрд╖ рдХрд╛рд░реНрдпреЛрдВ ( рдХрд╛рд░реНрдп 6 ) рдореЗрдВ рд╕реЗ рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд╣рд░реА рд╕рдВрд╕рд╛рдзрди рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред "рд╕рд╢рд░реНрдд рд░реВрдк рд╕реЗ рдЧрд╛рд░рдВрдЯреАрдХреГрдд" рд░рдирдЯрд╛рдЗрдо (рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд╛рд░рдХреЛрдВ рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░) рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдп рдХрд░рддреЗ рд╣реБрдП, рд╣рдореЗрдВ рдкреВрд░реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рдЧрддрд┐ рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рд▓рд╛рдн рдирд╣реАрдВ рдорд┐рд▓реЗред рдЗрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ, рдЗрди рдХрд╛рд░реНрдпреЛрдВ ( 4,5,6 ) рдХреЛ рдПрдХ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ред рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдлрд╝рд╛рдЗрд▓ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ:
// рдРрдк / src / рдкреНрд░рдХреНрд░рд┐рдпрд╛ / рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ / whoerChecker.php

рдХреНрд░реЛрдо рдХреЗ рд▓рд┐рдП рд╕реЗрдЯрд┐рдВрдЧ рдХрд░реЗрдВред рдкреНрд▓рдЧ-рдЗрди


Chrome рд▓рдЪреАрд▓реЗ рдврдВрдЧ рд╕реЗ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЗ рд╕рд╛рде рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

Chrome рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд▓рдЧрдЗрди рдПрдХ рд╕рдВрдЧреНрд░рд╣ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдореЗрдирд┐рдлрд╝реЗрд╕реНрдЯ ред Json рдлрд╝рд╛рдЗрд▓ рд╣реИред рд╡рд╣ рдкреНрд▓рдЧрдЗрди рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ, рдПрдЪрдЯреАрдПрдордПрд▓, рд╕реАрдПрд╕рдПрд╕ рдФрд░ рдкреНрд▓рдЧрдЗрди ( рд╡рд┐рд╡рд░рдг ) рджреНрд╡рд╛рд░рд╛ рдЖрд╡рд╢реНрдпрдХ рдЕрдиреНрдп рдлрд╛рдЗрд▓реЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред

рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХреНрд░реЛрдо рд╡рд░реНрдХрд┐рдВрдЧ рд╡рд┐рдВрдбреЛ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдкреНрд░рднрд╛рд╡реА рд╣реЛрдВрдЧреАред

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

рдХреЛрдб рдХрд╛ рдПрдХ рд╕реНрдирд┐рдкреЗрдЯ рдЬреЛ рд╕рдВрдЧреНрд░рд╣ рдмрдирд╛рддрд╛ рд╣реИ:

 // app/src/Chrome/proxyHelper.php .... class proxyHelper extends sshDocker{ .... // $name -  - // $files - [ ... '   -' => '', ...] protected function buildPlugin(string $name, array $files) { $this->last = "$this->cache/$name"; if (!file_exists("$this->last")) { $zip = new \ZipArchive(); $zip->open("$this->last", \ZipArchive::CREATE | \ZipArchive::OVERWRITE); foreach ($files as $n => $data) { $zip->addFromString(basename($n), $data); } $zip->close(); } $this->all[] = $this->last; $this->all = array_unique($this->all); return $this; } .... } 

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

рд╡рд┐рдВрдбреЛ рд╕рдордп рдкрд░рд┐рд╡рд░реНрддрди


рдЪрд▓ рд░рд╣реЗ рдХреНрд░реЛрдо рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╡реИрд╢реНрд╡рд┐рдХ рд╕рдордп рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рд╡рд┐рдВрдбреЛ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╕рдорд╛рди рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╡рд╛рд▓реЗ рдПрдХ рд╡рд░реНрдЧ рдХреЗ рд╕рд╛рде, рд▓реЗрдХрд┐рди рд╕рд╣реА рд╕рдордп рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдорд╛рдиреНрдп рд╣реИред

рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ Sampo Juustila рдХреЗ рдХрд╛рдо рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░рддрд╛ рд╣реВрдВ ред рдпреВрдЖрдИ рдХреЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛рдИ рдЧрдИ рдереА, рд▓реЗрдХрд┐рди рдереЛрдбрд╝рд╛ рд╢реЛрдзрди рдХреЗ рдмрд╛рдж рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдпрд╣рд╛рдВ рдПрдХ рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдкрд░ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдпрд╣ рдореЗрдирд┐рдлреЗрд╕реНрдЯреЛрдВ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рдВрджрд░реНрдн рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ ред

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

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

рд╕рдорд╛рдзрд╛рди рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдЯреБрдХрдбрд╝рд╛ рджреНрд╡рд╛рд░рд╛ рджрд░реНрд╢рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ:

 // app/chromePlugins/timeShift/content.js //     var s = document.createElement('script'); //        s.src = chrome.extension.getURL('timeshift.js'); //      (document.head || document.documentElement).appendChild(s); 

рдкреНрд░реЙрдХреНрд╕реА рд╕реЗрдЯрд┐рдВрдЧреНрд╕


Chrome рдореЗрдВ рдкреНрд░реЙрдХреНрд╕реА рд╕реЗрдЯ рдХрд░рдирд╛ рдЗрддрдирд╛ рд╕рд░рд▓ рд╣реИ рдХрд┐ рдореИрдВ рдПрдХ рд╕реНрдкреЙрдЗрд▓рд░ рдореЗрдВ js рдХреЛрдб рдЫрд┐рдкрд╛рдКрдВрдЧрд╛
 // app/chromePlugins/proxy/background.js var config = { mode: "fixed_servers", rules: { singleProxy: { scheme: "%scheme", host: "%proxy_host", port: parseInt(%proxy_port) }, bypassList: ["foobar.com"] } }; chrome.proxy.settings.set({value: config, scope: "regular"}, function () { }); function callbackFn(details) { return { authCredentials: { username: "%username", password: "%password" } }; } chrome.webRequest.onAuthRequired.addListener( callbackFn, {urls: ["&gtall_urls&lt"]}, ['blocking'] ); 


рдХреНрд░реЛрдо рдкреНрд▓рдЧрдЗрдиреНрд╕ рдкрде


рд╕рднреА рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЛ рдпреЛрдЬрдирд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдирд╛рдо рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдорд╢реАрди рдХреЗ рдЕрд╕реНрдерд╛рдпреА рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред
// рдкреНрд░реЙрдХреНрд╕реА рдкреНрд▓рдЧрдЗрди рдХреЗ рд▓рд┐рдП рдирд╛рдордХрд░рдг рдпреЛрдЬрдирд╛:
рдЫрджреНрдо [рдкрддрд╛] - [рдмрдВрджрд░рдЧрд╛рд╣] - [рдкреНрд░реЛрдЯреЛрдХреЙрд▓]>ред рдЬрд╝рд┐рдк
timeshift - ["-" | "" "] - [shift_in_minutes_from_GMT] .zip

рдЕрдЧрд▓рд╛, рд╣рдореЗрдВ рдЗрди рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЛ рдПрдХ рдбреЙрдХ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ рдХрд┐ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдорд╢реАрди рдкрд░ рдЪрд▓ рд░рд╣рд╛ рд╣реИред

рд╣рдо рдЗрд╕реЗ ssh рдХреЗ рд╕рд╛рде рдХрд░реЗрдВрдЧреЗредрдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ phpseclib рд╕реЗ рдорд┐рд▓рд╛ (рдмрд╛рдж рдореЗрдВ рдЗрд╕реЗ рдкрдЫрддрд╛рд╡рд╛ рднреА рд╣реБрдЖ)ред рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдЕрд╕рд╛рдорд╛рдиреНрдп рд╡реНрдпрд╡рд╣рд╛рд░ рд╕реЗ рдкрд░реЗрд╢рд╛рди рд╣реЛрдХрд░ рдореИрдВрдиреЗ рдПрдХ рджрд┐рди рдЗрд╕рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдореЗрдВ рдмрд┐рддрд╛рдпрд╛ред

Ssh рдХрдВрд╕реЛрд▓ рдХреНрд▓рд╛рдЗрдВрдЯ рдпрд╣рд╛рдВ рдмреЗрд╣рддрд░ рдХрд╛рдо рдХрд░реЗрдЧрд╛ рдФрд░ рддреЗрдЬреА рд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рдХрд╛рдо рдкрд╣рд▓реЗ рд╣реА рд╣реЛ рдЪреБрдХрд╛ рд╣реИред

рдирд┐рдореНрди рд╕реНрддрд░ (SFTP рдФрд░ SSH рдХреЗ рд╕рд╛рде рдХрд╛рдо) рдХреЗ рд▓рд┐рдП рдЖрдзрд╛рд░ рд╡рд░реНрдЧ рдЬрд┐рдореНрдореЗрджрд╛рд░ (рдиреАрдЪреЗ) рд╣реИред рдЗрд╕ рд╡рд░реНрдЧ рдХреЛ рдмрджрд▓рдиреЗ рд╕реЗ рдХрдВрд╕реЛрд▓ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд╕рд╛рде phpseclib рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ ред

 // app/src/Chrome/sshDocker.php //    (DOCKER_HOST, DOCKER_USER, DOCKER_PASS) //   : app/settings.php //      .... class sshDocker { .... //  .     docker //    .         // : app/techs.php const EXEC_DOCKER = DOCKER_BIN_PATH . "/docker exec -i %s %s"; .... //     sudo    (  ),  DOCKER_USER -  protected function sudo(string $command, string $expect = '.*'){...} //     Docker-,      //       -    self::EXEC_DOCKER protected function execDocker(string $command, string $expect){...} .... } 

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

 // app/src/Chrome/proxyHelper.php .... class proxyHelper extends sshDocker { .... public static function new(string $docker, $plugins) { return (new self($docker, $plugins)) ->setupPlugins(); } .... } 

рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде рдЪреЛрдо рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ


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









 composer require facebook/webdriver 

рд╕реЗрд▓реЗрдирд┐рдпрдо рд╕рд░реНрд╡рд░ рдСрдмреНрдЬреЗрдХреНрдЯ (RemoteWebDriver) рдХреЗ рдореБрдЦреНрдп рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдкрд╛рд░рдВрдкрд░рд┐рдХ рд╡рд┐рдиреНрдпрд╛рд╕ рдореБрдЭреЗ рдХреНрд░рд┐рдпрд╛рддреНрдордХ рд▓рдЧрддрд╛ рдерд╛ред
 // URL- $url = "https://example.com/books/196/empire-v-povest-o-nastoyashem-sverhcheloveke"; // URL,     (Selenium Server) $server = 'http://' . DOCKER_HOST . '/wd/hub'; //   ,      $options = new ChromeOptions(); $options->addArguments(array( '--disable-notifications' )); //    - $capabilities = DesiredCapabilities::chrome(); $capabilities->setCapability(ChromeOptions::CAPABILITY, $options); //        5000     URL $driver = RemoteWebDriver::create($server, $capabilities, 5000); $page = $driver->get($url); 


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

 // app/src/Process/worker/whoerChecker.php .... class whoerChecker extends nextStepWorker { //    : app/settings.php // URL Selenium Server const SELENIUM_SERVER = CHVM; //  - const DOCKER_NAME = DOCKER_NAME; .... public function config() .... //        : // $driver = RemoteWebDriver::create($server, $capabilities, 5000); $chrome = Chrome::driver( static::SELENIUM_SERVER, Chrome::capabilities(static::DOCKER_NAME, $plugins), 5000 ); .... } .... 

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

рд╕рдВрд░рдЪрдирд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди / рдкреНрд▓рдЧ-рдЗрди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИ рдФрд░ рд╡реИрд╢реНрд╡рд┐рдХ рд╡рд┐рдХрд▓реНрдк рдРрдк / рд╕реЗрдЯрд┐рдВрдЧреНрд╕.php рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред
 // app/plugs.php const PLUGS = [ 'timeshift' => [ 'path' => PROJECTPATH . '/app/chromePlugins/timeShift', 'files' => ['manifest.json', 'timeshift.js', 'content.js'], 'fields' => ['%addsminutes' => 'timeshift'] ], 'proxy' => [ 'path' => PROJECTPATH . '/app/chromePlugins/proxy', 'files' => ['manifest.json', 'background.js'], 'fields' => [ '%proxy_host' => 'host', '%proxy_port' => 'port', '%scheme' => 'scheme', '%username' => 'user', '%password' => 'pass' ] ] ]; 


рд╕реЗрд▓реЗрдирд┐рдпрдо рд╡реЗрдмрдбреНрд░рд╛рдЗрд╡рд░ рдХреЗ рд╕рд╛рде рдПрдХ рдкреГрд╖реНрда рдкрд╛рд░реНрд╕ рдХрд░рдирд╛ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИред

 .... $url = 'https://__/_-_'; $page = $chrome->get($url); .... //   xPath-   $xpath = '/html[1]/body[1]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/strong[1]'; $element = page->findElement(WebDriverBy::xpath($xpath)); .... //   $text = $element->getText(); // HTML- $html = $element->>getAttribute('innerHTML'); .... 

рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рд▓рд┐рдЦрд╛ рд╣реИ, рдЗрди рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рддреАрд╕рд░реЗ рдЪрд░рдг рдХреА рдЙрдкрдпреЛрдЧрд┐рддрд╛ ( рдХрд╛рд░реНрдп 4,5,6 ) рджреНрд╡рд╛рд░рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ :
// рдРрдк / src / рдкреНрд░рдХреНрд░рд┐рдпрд╛ / рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ / whoerChecker.php
рд╕реЗрд▓реЗрдирд┐рдпрдо рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЛ рдЫреЛрдбрд╝рдХрд░, рдореИрдВ рдЗрд╕ рддрдереНрдп рдкрд░ рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдЬрдм рдЗрд╕ рддрдХрдиреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдФрджреНрдпреЛрдЧрд┐рдХ рдкреИрдорд╛рдиреЗ (1000 - 3000 рдкреГрд╖реНрда рдХреЗ рдЙрджреНрдШрд╛рдЯрди) рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрд▓реЗрдирд┐рдпрдо рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рд╕рддреНрд░ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЕрд╕рд╛рдорд╛рдиреНрдп рдирд╣реАрдВ рд╣реИ ред рдЦрд┐рдбрд╝рдХреА рдорд╛рд▓рд┐рдХ рд░рд╣рд┐рдд рд╣реИред рдФрд░ рдРрд╕реА рдЦрд┐рдбрд╝рдХрд┐рдпрд╛рдВ рдмрд╣реБрдд рдХреБрдЫ рдЬрдорд╛ рдХрд░ рд╕рдХрддреА рд╣реИрдВред

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

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

WebRTC


рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рд╣реА рд╕рдордп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рдФрд░ рд╣рдорд╛рд░реЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрд╛ рдЯреНрд░реИрдлрд╝рд┐рдХ рдкреНрд░реЙрдХреНрд╕реА рд╕реЗ рдЧреБрдЬрд░рддрд╛ рд╣реИ, рдлрд┐рд░ рднреА рд╣рдореЗрдВ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

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

рдЕрд╕рдлрд▓рддрд╛ рдХреА рджреЛрдиреЛрдВ рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдХрд╛ рдХрд╛рд░рдг рдПрдХ рд╣реА рд╣реИ - рд╕рд░реНрд╡рд╡реНрдпрд╛рдкреА рдФрд░ рдлреБрд░реНрддреАрд▓рд╛ рдпреВрдбреАрдкреА рдкреИрдХреЗрдЯред рдХреЗ рд▓рд┐рдП WebRTC : рджреЛ рдкреЛрд░реНрдЯ рд╣реИ 3478 рдФрд░ 19302 ред

рдХреНрд░реЛрдо рдХрдВрдЯреЗрдирд░ рд╕реЗ рд╕реНрдХрд╛рдЙрдЯреНрд╕ рдХреЗ рдкрд▓рд╛рдпрди рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрдиреНрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдХрдВрдЯреЗрдирд░ рдХреЗ рд╕рд╛рде рдореЗрдЬрдмрд╛рди рдорд╢реАрди рдкрд░ iptables рдирд┐рдпрдо рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

 iptables -t raw -I PREROUTING -p udp -m multiport --dports 3478,19302 -j DROP 

рдПрдХ рд╣реА рдкреНрд░реЙрдХреНрд╕реА рд╣реЗрд▓реНрдкрд░ рдЗрд╕ рдХрд╛рд░реНрдп рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред

рдмрд╛рдХреА рдХрд╛рд░реНрдпрдХрд░реНрддрд╛


рд▓рдХреНрд╖реНрдп рдХреА рд╕рдлрд▓ рдЙрдкрд▓рдмреНрдзрд┐ рдХреЗ рд▓рд┐рдП - рдПрдХ рдЧреБрдордирд╛рдо рдкреНрд░реЙрдХреНрд╕реА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓рдХреНрд╖реНрдп рд╕рд╛рдЗрдЯ рдкрд░ "рдХреНрд▓рд┐рдХ" рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдПрдХ рдФрд░ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдпрд╣ whoerChecker рдХрд╛ рдПрдХ рдЫреЛрдЯрд╛ рд╕рдВрд╕реНрдХрд░рдг рд╣реЛрдЧрд╛ ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдкрдиреЗ рджрдо рдкрд░ рдХрд░рдирд╛ рд╣реИ, рд▓рд┐рдЦрд┐рдд рд╕рдм рдХреБрдЫ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛, рдпрд╣ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

рдкреВрд░реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдкрд░рд┐рдгрд╛рдо, рд╕реНрдерд┐рдд рдХрддрд╛рд░ рдореЗрдВ рдЧрд┐рд░рдиреЗ рд╕реЗ , рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд┐рдП рдЧрдП рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░реЙрдХреНрд╕реА рд╕рд░реНрд╡рд░ рдкрддреЗ рдХреЗ рдЧреБрдордирд╛рдореА рдХреА "рдбрд┐рдЧреНрд░реА" рдкрд░ рдбреЗрдЯрд╛ рд╣реЛрддрд╛ рд╣реИред

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

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



рдХреИрд╕реЗ рд╕рдм рдХреБрдЫ рдПрдХ рд╕рд╛рде рд░рдЦрд╛ рдЬрд╛рдП


рддреЛ, рджрд┐рдпрд╛ рдЧрдпрд╛:

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

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

рд╣рд╛рд▓рд╛рдВрдХрд┐, рд▓реЗрдЦ рдХрд╛ рдЖрдХрд╛рд░ рдФрд░ рд╡рд┐рд╖рдп рдХреА рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдореБрдЭреЗ рдПрдХ рдЕрд▓рдЧ рд▓реЗрдЦ рдореЗрдВ рдпрд╣ рд╕рдм рдмрддрд╛рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред рдпрд╣ рд▓реЗрдЦ noserver рддрдХрдиреАрдХ рд╣реИ ред рднрд╡рд┐рд╖реНрдп рдХрд╛ рд╕рд╛рдорд╛рди " рд╕рд░реНрд╡рд░ " рд╣реИред
рдЗрд╕рдХреЗ рдкреНрд░рдХрд╛рд╢рди рдХреА рддрд╛рд░реАрдЦ рдЖрдкрдХреА рд░реБрдЪрд┐ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ, рдкреНрд░рд┐рдп рдкрд╛рдардХред
. , ,тАж . , , , , , .

habr , . , , .

. , " server ", README.md .

" рдиреЛрд╕рд░реНрд╡рд░ " рдореЗрдВ, рдПрдХ рдЙрджрд╛рд╣рд░рдг рдПрдХ рдХрддрд╛рд░ (рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЪрд░рдг) рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░реЗрдЧрд╛ред рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗрд╡рд▓ рдЙрди рдЖрддреНрдорд╛рдУрдВ рдХреЛ рдкреЗрд╢рд╛рдм рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рдирдХрд╛ рдЙрдкрдпреЛрдЧ рдореИрдВ рд╢реНрд░рдорд┐рдХреЛрдВ рдХреЛ рдбрд┐рдмрдЧрд┐рдВрдЧ рдХрд░рддреЗ рд╕рдордп рдХрд░рддрд╛ рд╣реВрдВред

рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЖрд╡рд╢реНрдпрдХ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдЧрддрд┐ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЖрдк "рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ" рдЬреИрд╕реА рдХрдИ рдкреНрд░рддрд┐рдпрд╛рдБ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдпрд╣ рдЗрд╕ рддрд░рд╣ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ:

 // app/src/Process/noserver/singleProcess.php //   ,    //   include __DIR__ . '/../../../settings.php'; use App\ESB\pipeNcacheService; use App\arrayNstring\queueDSN; use App\arrayNstring\timeSpent; use App\arrayNstring\progressString; //    $path = __DIR__ . '/../worker'; //   $queues = array_keys(WORKERS); $queue = $argv[1] ?? end($queues); $queue = strtolower($queue); if (!in_array($queue, $queues)) die("php $argv[0] <queue_name>" . PHP_EOL); //  - $progress = new progressString("Listenning... Idle: ", 40, 20); // ,      $stopwatch = timeSpent::start(); //    beanstalkd- list($worker, $task) = WORKERS[$queue]; $procid = ['procid' => posix_getpid()]; //   beanstalkd  Memcached, //     ( ) $dsn = new queueDSN($task, $queue, ...QUEUE_SERVER); //     ESB- $pnc = new pipeNcacheService($dsn); $pipe = $pnc->getPipe(); echo "Start listener for queue: $queue." . PHP_EOL; echo "Press Ctrl-C to stop listener." . PHP_EOL; //      //       while (true) { try { $job = $pipe->watch($queue) ->reserve(1); $now = new DateTime(); $opts = json_encode($pipe->getPayload($job) + $procid); $pipe->delete($job); echo PHP_EOL . "Task recived at: " . $now->format('H:i:s') . " Starting worker: $worker. "; $stopwatch = timeSpent::start(); exec("php $path/$worker $opts", $out); echo "Finished. Time spent: $stopwatch" . PHP_EOL; $stopwatch = timeSpent::start(); } catch (Throwable $exception) { echo $progress($stopwatch('%I:%S', null, $now)); } } 

рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреА рдЕрдЬреАрдм рд╢реБрд░реБрдЖрдд рд╣рдбрд╝рддрд╛рд▓реА рд╣реИ ... рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдПрдХ PHP рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИ, рдореИрдВрдиреЗ рдирд┐рд╖реНрдкрд╛рджрди (...) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ ред

рдпрд╣ рд╕рдордп рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рддрд╛рдХрд┐ " рд╕рд░реНрд╡рд░ " рдореЛрдб рдореЗрдВ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП " рдиреЛрдЬрд░рд╡рд░ " рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╢реНрд░рдорд┐рдХ рди рдмрдиреЗрдВ рдпрд╛ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЛ рди рдмрджрд▓реЗрдВ ред

рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдФрд░ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рд╢рдмреНрдж


рд╡рд┐рдиреНрдпрд╛рд╕ рд╕реНрдерд┐рд░рд╛рдВрдХ


рдЖрдкрдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ app / settings.php рд╣реИ ред рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЛ рдХреНрд▓реЛрди рдХрд░рдиреЗ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рдЗрд╕реЗ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдлрд╝рд╛рдЗрд▓ рдРрдк / рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХрд╛ рдирд╛рдо рдмрджрд▓реЗрдВ ред php.dist ред рд╕рднреА рд╕реНрдерд┐рд░рд╛рдВрдХ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рд╡рд░реНрдгрд┐рдд рд╣реИрдВред рдЕрдиреНрдп рдЪреАрдЬрд╝реЛрдВ рдХреЗ рдмреАрдЪ

рдРрдк / рд╕реЗрдЯрд┐рдВрдЧреНрд╕.рдлреИрдк , рдЕрдиреНрдп рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЗ рд╕рд╛рде рдлрд╛рдЗрд▓ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред
- app / queues.php рдореЗрдВ рдХрддрд╛рд░реЛрдВ рдФрд░ рдиреМрдХрд░рд┐рдпреЛрдВ рдХреЗ рдирд╛рдо рд╢рд╛рдорд┐рд▓ рд╣реИрдВ
- рдРрдк / рдкреНрд▓рдЧрдЗрдиреНрд╕ рдореЗрдВ рдХреНрд░реЛрдо рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХрд╛ рд╡рд┐рд╡рд░рдг рд╣реИ
- рдРрдк / Techs.php рдореЗрдВ рдкрд░рд┐рдХрд▓рд┐рдд рд╕реНрдерд┐рд░рд╛рдВрдХ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ

рдЙрдкрдпреЛрдЧрд┐рддрд╛рдПрдБ


рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдФрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд░рдЦрдиреЗ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рдХрдИ рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рд╣реИрдВред рдЙрдкрдпреЛрдЧрд┐рддрд╛рдПрдБ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕реЗ рд▓реЙрдиреНрдЪ рдХреА рдЬрд╛рддреА рд╣реИрдВред рддрд░реНрдХ рд╡рд░реНрдгрди рдХреЗ рд╕рд╛рде рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ред рд╕реНрдерд┐рдд: рдПрдкреНрд▓рд┐рдХреЗрд╢рди / src / Utils ред
 backup.php - рдПрдХ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдХрддрд╛рд░ рдмрдЪрд╛рддрд╛ рд╣реИ
    clear.php - рдХрддрд╛рд░реЛрдВ рдХреЛ рд╕рд╛рдл рдХрд░рддрд╛ рд╣реИ
    Export.php - рдПрдХ рд╕рд╣реЗрдЬреА рдЧрдИ рдХрддрд╛рд░ рд╡рд╛рд▓реА рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдирд┐рд░реНрдпрд╛рдд 
                     рдЬреЛрдбрд╝реЗ рдХрд╛ рдкрддрд╛: рдмрдВрджрд░рдЧрд╛рд╣
    givethejob.php - рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдХрд╛рд░реНрдп рдкреЛрд╕реНрдЯ рдХрд░рддрд╛ рд╣реИ 
                     (рд╕реНрд░реЛрдд - рдкрддрд╛: рдкреЛрд░реНрдЯ рдХреЙрдореНрдмреЛ рдмреЙрдХреНрд╕)ред
                     рдХреБрдЫ рдкрддреЛрдВ рдХреЛ рд╕реВрдЪреА рд╕реЗ рдмрд╛рд╣рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
    rest.php - рдПрдХ рд╕рд╣реЗрдЬреА рдЧрдИ рдХрддрд╛рд░ рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИ 

рдХрд╛рд░реНрдпрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдлрд╛рдЗрди рдЯреНрдпреВрдирд┐рдВрдЧ


рд▓рд┐рдЦрд┐рдд рд╢реНрд░рдорд┐рдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:

 // app/src/Process/worker/curlChecker.php .... $worker = new curlChecker( [ //    curlChecker::WORKER => 'curlchecker', //  beanstalkd curlChecker::PIPE_HOSTPORT => implode(':', QUEUE_SERVER), //  Memcached curlChecker::CACHE_HOSTPORT => implode(':', MEMCACHED), // ,    . //    -   curlChecker::DB_SCRIPT => __DIR__ . '/../../../confdb.php', // ,       // (        -) curlChecker::INFO_START => CURL_START, // ,        // (        -) curlChecker::INFO_END => CURL_END, //  ,     //    //        curlChecker::INFO_ADDS_END => ['host', 'port'] ], ['setupworker', 'config', 'logic'] ); .... 


рддреИрдирд╛рддреА


рдореИрдиреБрдЕрд▓ рдорд╛рдирддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ Ubuntu 18.04 рд╕реНрдерд╛рдкрд┐рдд рдХреЗ рд╕рд╛рде 2 рдорд╢реАрдиреЗрдВ рд╣реИрдВ ред
рдПрдХ рдЗрдВрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ ( рдбреЙрдХрдЯрд░ ) рдХреЗ рд▓рд┐рдП, рджреВрд╕рд░рд╛ рдкреНрд░реЛрд╕реЗрд╕ рдХрдВрдЯреНрд░реЛрд▓ ( рдкреНрд░рдХреНрд░рд┐рдпрд╛ ) рдХреЗ рд▓рд┐рдПред

рдбрд╛рдХ рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗрд╡рд╛рд▓рд╛ рдордЬрд╝рджреВрд░

 #    root-. # ,     TCP-: # 11300, 11211, 4444, 5930, 8080, 8081, 8082, 8083 #   . sudo -s apt -y update apt -y install git snap snap install docker apt -y install docker-compose # C       # " root-"    cd ~ git clone \ https://oauth2:YRGzV8Ktx2ztoZg_oZZL@git.ituse.ru/deploy/esb-infrastructure.git cd esb-infrastructure docker-compose up --build -d #      3     #   . #       web-. 

рдкреНрд░рдХреНрд░рд┐рдпрд╛

 #      . #   . sudo apt -y update sudo apt -y install git php-common php-cli php-curl php-zip php-memcached composer # C     process-   , #     -  php- cd /var/www git clone \ https://oauth2:YRGzV8Ktx2ztoZg_oZZL@git.ituse.ru/deploy/clicker-noserver.git cd clicker-noserver composer update #  .       "XXXXXXXX" mv app/settings.php.dist app/settings.php #   . gnome-terminal \ --tab -e 'bash -c "php app/src/Process/noserver/singleProcess.php curl"' \ --tab -e 'bash -c "php app/src/Process/noserver/singleProcess.php timezone"' \ --tab -e 'bash -c "php app/src/Process/noserver/singleProcess.php whoer"' #  . ,     , #  : - log/list.proxy php app/src/Utils/givethejob.php ./log/list.proxy 

рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ, рд╡реЗрдм-рдкреИрдирд▓ (http: // ip-address-docker-Machines: 8080) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдпрд╣ рджреЗрдЦрдирд╛ред
рдкрд░рд┐рдгрд╛рдо рд╕реНрдерд┐рдд рдХрддрд╛рд░ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛ ред

рдФрд░ рдирд┐рд╖реНрдХрд░реНрд╖ рдореЗрдВ


рд╣реИрд░рд╛рдиреА рдХреА рдмрд╛рдд рд╣реИ рдХрд┐ рдЗрд╕ рд▓реЗрдЦ рдХреЛ рд▓рд┐рдЦрдиреЗ рдФрд░ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рд▓рдЧрд╛ред

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

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

рдЖрдкрдХрд╛ рдзрдиреНрдпрд╡рд╛рдж

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


All Articles