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

рдирд┐рджрд╛рди
рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдЕрдВрджрд░ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдпрджрд┐ рдЖрдк рдПрдХ рд╕рд╛рде рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЦреЛрд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ (рдЖрдк рдЕрд▓рдЧ рдЯреИрдм рдореЗрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ) рдПрдХ рд╕реЛ рд░рд╣реА рдлрд╝рд╛рдЗрд▓ рдФрд░ рдХрдИ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬреЛ рд╕рд┐рд░реНрдл рд╕рддреНрд░ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ:
<?php session_start(); sleep(30);
рд╕рддреНрд░ рдЬрд╛рд░реА рд╣реЛрдиреЗ (30 рд╕реЗрдХрдВрдб) рддрдХ рдкреЗрдЬ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВрдЧреЗ рдФрд░ рдпрд╣ рдУрд╣ рдУрд╣ рдУрд╣ рд╕рдордп рд▓рдЧреЗрдЧрд╛, рдФрд░ рд╡реЗрдм рд╕рд░реНрд╡рд░ рд╕реНрд▓реЙрдЯ рдмрдВрдж рд╣реЛ рдЬрд╛рдПрдВрдЧреЗред рдореЛрдЯреЗ рддреМрд░ рдкрд░ рдПрдХ рд╣реА рдмрд╛рдд рддрдм рд╣реЛрддреА рд╣реИ рдЬрдм рдПрдХ рд╡реЗрдм рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реЗрд╢рди рдореЗрдВ рдПрдХ рдЕрдЬрд╛рдХреНрд╕ рдПрдХ рднрд╛рд░реА рдХрд╛рдо рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдмрд╛рдХреА рдХреЗ рдЕрдЬрд╛рдХреНрд╕ рдФрд░ рдЕрдиреНрдп рдЗрдВрдЯрд░рдлреЗрд╕ рддрддреНрд╡ рд╣реЛрд▓реНрдб рдкрд░ рд▓рдЯрдХрддреЗ рд╣реИрдВ (рдпрд╛ рдЬрдм рдПрдХ рд╣реА рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЗ рддрд╣рдд рдХрдИ рдЯреИрдм рдЦреЛрд▓реЗ рдЬрд╛рддреЗ рд╣реИрдВ)ред
рд╡реЗрдм рд╕рд░реНрд╡рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ httpd, рд▓реЗрдХрд┐рди php-fpm рдХреЗ рд╕рд╛рде рднреА рдпрд╣реА рдмрд╛рдд рд╣реЛрддреА рд╣реИ - рд╡реЗ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕рддреНрд░ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд▓реЙрдХ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ рд╣рдо lsof рдХреЗ рд╕рд╛рде рджреЗрдЦрддреЗ рд╣реИрдВ:
lsof- рдПрди | awk '/ sess_ /'
httpd 7079 рдХреЛрдИ рдирд╣реАрдВ 52uW REG 8.1 2216 809832 / tmp / sess_f629a13b4b0920a210428686171744a6a6
httpd 10406 тАЛтАЛрдХреЛрдИ 52u REG 8.1 2216 809832 / tmp / sess_f629a13b4b0920a21042c86d17f4a6a6
httpd 10477 рдХреЛрдИ рдирд╣реАрдВ 52u REG 8.1 2216 809832 / tmp / sess_f629a13b4b0920a21042c86d17f4a6a6
httpd 10552 рдХреЛрдИ 52u REG 8.1 2216 809832 / tmp / sess_f629a13b4b0920a210428686171744a6a6
httpd 11550 рдХреЛрдИ рдирд╣реАрдВ 52u REG 8.1 2216 809832 / tmp / sess_f629a13b4b0920a210428686171744a6a6
httpd 11576 рдХреЛрдИ рдирд╣реАрдВ 52u REG 8.1 2216 809832 / tmp / sess_f629a13b4b0920a21042c86d17f4a6a6
4 рд╡реЗрдВ рдХреЙрд▓рдо рдкрд░ рдзреНрдпрд╛рди рджреЗрдВред рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рд▓реЙрдХ рдХрд╛ рдкреНрд░рдХрд╛рд░ред "UW" - рд╡реЗрдм рд╕рд░реНрд╡рд░ рдиреЗ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдлрд╛рдЗрд▓ рдХреЛ рд▓реЙрдХ рдХрд┐рдпрд╛ рд╣реИред рдмрд╛рдХреА рд▓реЛрдЧ рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдирд╕реЛрдВ рдореЗрдВ рдзреВрдореНрд░рдкрд╛рди рдХрд░ рд░рд╣реЗ рд╣реИрдВ :-) рдЬреИрд╕реЗ рд╣реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ 7079 рдЕрдкрдирд╛ рдХрд╛рдо рдкреВрд░рд╛ рдХрд░рддреА рд╣реИ, рдПрдХ рдФрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рддрд╛рд▓рд╛ "uW" рд▓реЗ рдЬрд╛рдПрдЧреАред рдЗрд╕ рд╕рдордп, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рд▓рд╛рдЗрди рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдФрд░ рд╡реЗрдм рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛рдлрд╝реА рдзреАрдорд╛ рд╣реИред рдФрд░ рднреА рдордЬреЗрджрд╛рд░ рдЕрдЧрд░ рдХрдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ рдХреБрдЫ рд╕реЗрдХрдВрдб рдХреЗ рд▓рд┐рдП рд╕рддреНрд░ рдХреЛ рд░реЛрдХрддреА рд╣реИрдВ - рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЖрдорддреМрд░ рдкрд░ рдПрдХ рд╣рд┐рд╕реНрд╕реЗрджрд╛рд░реА рдмрди рдЬрд╛рдПрдЧрд╛ред
рдЕрдм рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ рдХреНрдпрд╛ рдХрд░ рд░рд╣реА рд╣реИрдВ:
ps -e -o pid, comm, wchan = WIDE-WCHAN-COLUMN | grep httpd
7079 httpd -
10406 тАЛтАЛhttpd flock_lock_file_wait
10477 httpd flock_lock_file_wait
10552 httpd flock_lock_file_wait
11550 httpd flock_lock_file_wait
11576 httpd flock_lock_file_wait
рджреВрд╕рд░реЗ рдХреЙрд▓рдо рдореЗрдВ рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рд╕рднреА
"flock_lock_file_wait" рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд╡реНрдпрд╕реНрдд рд╣реИрдВред рдФрд░ рдХреНрдпрд╛?
рд╕реНрдЯреНрд░реЗрд╕-рдкреА 10406
рдкреНрд░рдХреНрд░рд┐рдпрд╛ 10406 тАЛтАЛрд╕рдВрд▓рдЧреНрди - рдЫреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд░реБрдХрд╛рд╡рдЯ
рдЭреБрдВрдб (52, LOCK_EX)
рдпрд╣ рд╕рд╣реА рд╣реИ, рдПрдХ рдЕрдирдиреНрдп рд▓реЙрдХ рдЕрдиреБрд░реЛрдз рдХреЗ рд╕рд╛рде
рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдореЗрдВ ред
LOCK_EX рдПрдХ рдЕрдирдиреНрдп рд▓реЙрдХ рд░рдЦреЗрдВред рдХреЗрд╡рд▓ рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдПрдХ рдкрдХрдбрд╝ рд╕рдХрддреА рд╣реИ
рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдордп рдореЗрдВ рдЕрдирдиреНрдп рд▓реЙрдХред

рдЙрдкрдпреЛрдЧреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ
рд╡реЗрдм рд╕рд░реНрд╡рд░реЛрдВ рдкрд░ PHP рдХрд╛рд░реНрдпрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд░реЛрдХрдХрд░ рдРрд╕реА "рдЯреНрд░реЗрди" рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреА рд▓рдЧрд╛рддрд╛рд░ рдирд┐рдЧрд░рд╛рдиреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдПрдХ рд╕рд╛рдзрд╛рд░рдг AWK рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦреА рд╣реИ:
/sess_/ { load_sessions[$9]++; if (load_sessions[$9]>max_sess_link_count){ max_sess_link_count = load_sessions[$9]; max_sess_link_name = $9; }; if ($4 ~ /.*uW$/ ){ locked_id[$9]=$2 }; } END { print max_sess_link_count, max_sess_link_name,locked_id[max_sess_link_name]; if (locked_id[max_sess_link_name] && max_sess_link_count>3) {
рдпрд╣ рдЗрд╕ рддрд░рд╣ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ:
lsof- рдПрди | awk -f sess_view.awk
5 / tmp / sess_f629a13b4b0920a21042c86d17f4a6a6 24830
"рдЯреНрд░реЗрди" рдФрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рд▓рдВрдмрд╛рдИ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ - рдореИрд╢ рдмрдирд╛рддрд╛ рд╣реИред
рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рд▓рдбрд╝рд╛рдИ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдХреЛрдИ рдкреНрд▓рдЧ рдирд╣реАрдВ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП - рдЖрдкрдХреЛ рдпрд╛ рддреЛ рд╕рддреНрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рддрд░реНрдХ рдХреЛ рдлрд┐рд░ рд╕реЗ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдХрд╕реНрдЯрдо PHP рд╣реИрдВрдбрд▓рд░реНрд╕ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ - рд╕рдм рдХреБрдЫ рдХрд░реЗрдВ рддрд╛рдХрд┐ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреБрдЫ рднреА рдзреАрдорд╛ рди рдХрд░реЗрдВ, рдФрд░ рдЖрдк, рд╕рд┐рд╕реНрдЯрдо рдкреНрд░рд╢рд╛рд╕рдХ рдХреЗ рд░реВрдк рдореЗрдВ, рдиреАрдВрдж рд╕реЗ рдФрд░ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рд╕реЛрдПрдВред
рдпрджрд┐ рдпрд╣ рдмрд╣реБрдд рдЖрд▓рд╕реА рд╣реИ (рдХреНрдпрд╛ рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ :-) рд╣реВрдВ), рддреЛ рдЖрдк "рдорд╛рд░" рдХреЛ рдЕрдирд╕реБрдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╡реЗрдм рд╕рд░реНрд╡рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рд╢реВрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдПрдХ рдкрддрди
рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдФрд░ рддрдХрдиреАрдХреА рд╕рд╣рд╛рдпрддрд╛ рдкреНрд░рдмрдВрдзрдХреЛрдВ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдЖрдирдВрдж рд▓реЗрддреЗ рд╣реИрдВ :-) рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдзрд┐рдХ рд╕рд╣реА рд╣реИ, рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИ, рдмреАрдпрд░ рдХреЗ 2-3 рдбрд┐рдмреНрдмреЗ рдЦрд░реАрджрдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ред рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХрд╛ рджреМрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП - рдПрдХ рдлрд╛рдЗрд▓ рдореЗрдВ рдХреНрд░реЛрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рд╕рдорд╛рди рддрд░реАрдХреЗ рд╕реЗ рдПрдХрддреНрд░ рдХрд┐рдП рдЧрдП рдЖрдВрдХрдбрд╝реЛрдВ рдХреЗ рд╕рд╛рде рдФрд░ refactoring рдкрд░ рд╕рд╣рдордд :-)
рд╕рднреА рдХреЛ рд╢реБрднрдХрд╛рдордирд╛рдПрдБ рдФрд░ рд╕рдлрд▓рддрд╛!
рдкреБрдирд╢реНрдЪ
рдПрдХ рд░реВрд╕реА рд╢рд┐рдХреНрд╖рд╛ рдХреЗ рд╕рд╛рде рд░реВрд╕реА рд╢рд┐рдХреНрд╖рдХреЛрдВ рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░реЛрдВ рдХреЗ рдЕрдиреБрд░реЛрдз рдкрд░, рдЙрдиреНрд╣реЛрдВрдиреЗ "рд▓реЙрдХ" рд╢рдмреНрдж рдХреЛ "рд▓реЙрдХ" рд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛ред
рд╣рдорд╛рд░реА рдХрдВрдкрдиреА
рдХреА рдмрдбрд╝реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реБрдП, рд╣рдореЗрдВ рдкреНрд░рджрд░реНрд╢рди рд╕рдорд╕реНрдпрд╛рдУрдВ рдФрд░ рдЙрдирдХреЗ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЗ рддреНрд╡рд░рд┐рдд рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП рд▓рдЧрд╛рддрд╛рд░ рдЙрдкрдХрд░рдг рдФрд░ рддрдХрдиреАрдХреЗрдВ рдмрдирд╛рдиреА рд╣реЛрдВрдЧреАред рдЬреАрдПрдирдпреВ / рд▓рд┐рдирдХреНрд╕ рдореЗрдВ рдЙрдкрдпреЛрдЧреА рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдПрдХ рдмрдбрд╝рд╛ рд╕реЗрдЯ рд╣реИ, рд▓реЗрдХрд┐рди, рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рд╣рд░ рдХреЛрдИ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рдХрд┐ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдПред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд▓реЗрдЦ рди рдХреЗрд╡рд▓ рд╕рд┐рд╕реНрдЯрдо рдкреНрд░рд╢рд╛рд╕рдХ рдХреЗ рд▓рд┐рдП, рдмрд▓реНрдХрд┐ рд╡реЗрдм рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рднреА рдЙрдкрдпреЛрдЧреА рд╣реЛрдВрдЧреЗред