PHP рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдмрд╛рд░ рдкреНрд░рддрд┐ рдорд┐рдирдЯ рд╕реЗ рдЕрдзрд┐рдХ рдХреНрд░реЛрди рдХреИрд╕реЗ рдЪрд▓рд╛рдПрдВ

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

# тФМтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА  (0 - 59)
# тФВ тФМтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА  (0 - 23)
# тФВ тФВ тФМтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА  (1 - 31)
# тФВ тФВ тФВ тФМтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА  (1 - 12)
# тФВ тФВ тФВ тФВ тФМтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА   (0 - 6)
# тФВ тФВ тФВ тФВ тФВ
# * * * * * <  >

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

рдирддреАрдЬрддрди, рдХрдорд╛рдВрдб рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдиреНрдпреВрдирддрдо рд╕рдВрднрд╡ рдЕрдВрддрд░рд╛рд▓ рдПрдХ рдмрд╛рд░ рдПрдХ рдорд┐рдирдЯ рд╣реИред

рдХрдИ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрди рдХреА рдЕрдзрд┐рдХ рдмрд╛рд░ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреНрд░рддреНрдпреЗрдХ 10 рд╕реЗрдХрдВрдбред рдХреБрдЫ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реНрд╡рдЪрд╛рд▓рди рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдЕрдзрд┐рдХрддрдо рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╡рд┐рд▓рдВрдм рдЕрдХреНрд╕рд░ 1-1.5 рд╕реЗрдХрдВрдб рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред

рдмреЗрд╢рдХ, рдХреНрд▓рд╛рд╕рд┐рдХ рдХреНрд░реЛрди рдЗрд╕рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИ - рдЗрд╕реЗ рд╕реБрдзрд╛рд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдЦрд┐рд▓рд╛рдл рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реБрд░рдХреНрд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рд┐рдирдХреНрд╕ рдкрд░ рдХреНрд▓рд╛рд╕рд┐рдХ рдХреНрд░реЛрди рдкрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ (PHP рдореЗрдВ) рдмрдирд╛рдиреЗ рдХрд╛ рдПрдХ рдЪрд░рдг-рджрд░-рдЪрд░рдг рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИред

рдЯрд╛рд╕реНрдХ рд╕реЗрдЯрд┐рдВрдЧ рдФрд░ рдХреНрд░реЛрди рд╕реЗрдЯрдЕрдк


рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ:

  1. рд╕рд╛рдордиреЗ рдХреЗ рдЕрдВрдд рдореЗрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ "рд░рди" рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ рдХреБрдЫ рдЬрдЯрд┐рд▓ рдХрд╛рд░реНрдп рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рд╢реБрд░реВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ;
  2. рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдПрдХ рдирдИ рдкрдВрдХреНрддрд┐ рд▓рд┐рдЦрдиреЗ рдХреЗ рдмрд╛рдж рд╡рд╛рдкрд╕ рдЕрдВрдд рдкреБрд╖реНрдЯрд┐ рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ;
  3. рдХреНрд░реЙрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, рд╣рдо рдРрд╕реЗ рдирдП рдХрд╛рд░реНрдпреЛрдВ рдХреЛ "рдЯреНрд░реИрдХ" рдХрд░реЗрдВрдЧреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЬрд┐рддрдиреА рдЬрд▓реНрджреА рд╣реЛ рд╕рдХреЗ рдкреВрд░рд╛ рдХрд░реЗрдВрдЧреЗ рддрд╛рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдПрдХ рдорд┐рдирдЯ рдореЗрдВ рдкрд░рд┐рдгрд╛рдо рди рдорд┐рд▓реЗ, рд▓реЗрдХрд┐рди рддреБрд░рдВрдд *ред

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

рддреЛ, рдХреНрд░реЛрди рдХреЛ рдЙрд╕рдХреЗ рдЕрдзрд┐рдХрддрдо рд░реВрдк рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЕрд░реНрдерд╛рддред рдПрдХ рдмрд╛рд░ рдПрдХ рдорд┐рдирдЯ:

* * * * * /usr/bin/php -q /run.php > /dev/null 2>&1
#/usr/bin/php -    PHP   (      )
#/run.php -   PHP   
#> /dev/null 2>&1 - ,            run.php

рдПрдХрд▓ рдЪрдХреНрд░


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

рд╡рд░реНрддрдорд╛рди рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, 10 рд╕реЗрдХрдВрдб рдХреЗ рдПрдХ рдЪрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЪрдХреНрд░реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ 60/10 = 6. рдХреБрд▓ рд╣реИ, рд╕рд╛рдорд╛рдиреНрдп рдХреЛрдб рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:

for ($cycle = 1; $cycle <= 6; $cycle++) { # 6 
    $all_tasks = get_all_tasks(); #     
    if ($all_tasks) { #    - 
        foreach($all_tasks as $one_task) { #     
            solve_one_task($one_task); #  
        }
    }
    sleep(10); #  ,  ""  10 
}

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

рдмрд╛рд░-рдмрд╛рд░ рдХрд╛рд░реНрдп рдирд┐рд╖реНрдкрд╛рджрди рд╕реЗ рдмрдЪрдирд╛


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

рдЗрд╕рд╕реЗ рдкреБрди: рдирд┐рд╖реНрдкрд╛рджрди рдХреА рд╕рдорд╕реНрдпрд╛ рдкреИрджрд╛ рд╣реЛрддреА рд╣реИ:

  • рдлрд╝рдВрдХреНрд╢рди solve_one_task()рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЪрд▓ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрднреА рддрдХ рдЕрдкрдирд╛ рдХрд╛рдо рдкреВрд░рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ;
  • рдЗрд╕рд▓рд┐рдП, рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдХрд╛рд░реНрдп рдЕрднреА рднреА рдЕрдзреВрд░рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рд╣реИ;
  • рдЕрдЧрд▓рд╛ рдЪрдХреНрд░ рдЗрд╕ рдХрд╛рд░реНрдп рдХреЛ рдлрд┐рд░ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдЧрд╛ рдФрд░ solve_one_task()рдЙрд╕реА рдХрд╛рд░реНрдп рдХреЗ рд╕рд╛рде рдлрд┐рд░ рд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЪрд▓рд╛рдПрдЧрд╛ ред

рдмреЗрд╢рдХ, рдЗрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдХреБрдЫ рд╕реНрдерд┐рддрд┐ рдмрджрд▓рдХрд░ред

рд▓реЗрдХрд┐рди рд╣рдо рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рд▓реЛрдб рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ: рдореЗрд░реЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдЖрдзрд╛рд░ рдкрд░, MYSQL рдЕрдиреБрд░реЛрдз рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рддреБрд░рдВрдд рд╕рдВрд╕рд╛рдзрд┐рдд рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред 0.5 рд╕реЗрдХрдВрдб рдХрд╛ рдЕрдВрддрд░ рднреА рдмрд╛рд░-рдмрд╛рд░ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рдЬрдиреНрдо рджреЗ рд╕рдХрддрд╛ рд╣реИ - рдЬреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИред

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

рдореВрд▓ рд╕рддреНрдпрд╛рдкрди рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ flock- рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдЬреЛ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕реЗрдЯ рдФрд░ рдЕрдирд▓реЙрдХ рдХрд░рддрд╛ рд╣реИред

PHP рдирд┐рд╖реНрдкрд╛рджрди рдореЗрдВ, рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

$lock_file_abs = 'file'; #  
$fp = fopen($lock_file_abs,"w+"); #   
if (flock($fp, LOCK_EX | LOCK_NB)) { #,    
    solve_one_task($one_task); #  
    flock($fp, LOCK_UN); #   ,     
}
else {
    #,   , ..       
}
fclose($fp); #   
unlink($lock_file_abs); # ,   

рдкрд░рд┐рдгрд╛рдо


рдкреВрд░реЗ рдЪрдХреНрд░ рдХрд╛ рд╕рд╛рдорд╛рдиреНрдп рджреГрд╢реНрдп рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:

for ($cycle = 1; $cycle <= 6; $cycle++) {
    $all_tasks = get_all_tasks();
    if ($all_tasks) {
        foreach($all_tasks as $one_task) {
            $lock_file_abs = __DIR__.'/locks/run_'.$one_task['id'];
            $fp = fopen($lock_file_abs,"w+");
            if (flock($fp, LOCK_EX | LOCK_NB)) {
                solve_one_task($one_task);
                flock($fp, LOCK_UN);
            }
            else {
                #    
            }
            fclose($fp);
            unlink($lock_file_abs);
        }
    }
    sleep(10);
}

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

рдФрд░ рдЕрдм рдпрд╣ рдХреЛрдб рдХреЛ рд╣рд░ рдорд┐рдирдЯ рдХреНрд░реЛрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рдФрд░ рдпрд╣ рдмрджрд▓реЗ рдореЗрдВ, рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдкрдиреЗ рдЕрдВрджрд░ рдЫреЛрдЯреЗ рдЪрдХреНрд░ рдЪрд▓рд╛рдПрдЧрд╛ред

All Articles