рдорд╛рдЗрдЧреНрд░реЗрдЯ рдлрд╝реЛрдЯреЛ рдпрд╛ MySQL рдореЗрдВ рдПрдХ рдФрд░ рдХрддрд╛рд░

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

рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдмрдпрд╛рди


рд╣рдорд╛рд░реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рдЕрдкрд▓реЛрдб рдХреА рдЧрдИ рд╕рднреА рддрд╕реНрд╡реАрд░реЛрдВ рдХреА рдХреБрд▓ рдорд╛рддреНрд░рд╛ рд▓рдЧрднрдЧ 600 рдЯреАрдмреА рд╣реИред рдЗрд╕ рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рджреЛрдиреЛрдВ рдореВрд▓ рдлрд╝реЛрдЯреЛ рдФрд░ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЗ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдЖрдХрд╛рд░ рдХреЗ рд╕рд╛рде рдлрд╝реЛрдЯреЛ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╢рд╛рдорд┐рд▓ рд╣реИред
рдПрдХ рдореЛрдЯреЗ рдЕрдиреБрдорд╛рди рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдпрджрд┐ 190 рдорд┐рд▓рд┐рдпрди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдиреЗ 600 рдЯреАрдмреА рдбреЗрдЯрд╛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдерд╛рдИрд▓реИрдВрдб рдХреЗ 1.5 рдорд┐рд▓рд┐рдпрди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ (рдбреЗрдЯрд╛ рдХреЗрдВрджреНрд░реЛрдВ рдХреЗ рдмреАрдЪ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдП рдЧрдП рд╕рдмрд╕реЗ рдмрдбрд╝реЗ рджреЗрд╢) рдиреЗ 4.7 рдЯреАрдмреА рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рд╣реИред рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдХреЗ рд╕рдордп рд╣рдорд╛рд░реЗ рдбреЗрдЯрд╛ рдХреЗрдВрджреНрд░реЛрдВ рдХреЗ рдмреАрдЪ рдЪреИрдирд▓ рдХреА рдмреИрдВрдбрд╡рд┐рдбреНрде 200 рдПрдордмреАрдкреАрдПрд╕ рдереАред рд╕рд░рд▓ рдЧрдгрдирд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, рд╣рдореЗрдВ рдерд╛рдИрд▓реИрдВрдб рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд╕рднреА рдлрд╝реЛрдЯреЛ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 55 рдШрдВрдЯреЗ рдорд┐рд▓рддреЗ рд╣реИрдВред рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рдпрд╣ рдЪреИрдирд▓ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рдбреЗрдЯрд╛ рдХреЗрдВрджреНрд░реЛрдВ рдХреЗ рдмреАрдЪ рдШреВрдо рд░рд╣реЗ рдЕрдиреНрдп рдбреЗрдЯрд╛ рджреНрд╡рд╛рд░рд╛ рдХрдмреНрдЬрд╛ рдХрд░ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕реЗ 55 рдШрдВрдЯреЗ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рд▓рдЧреЗрдЧрд╛ред рдФрд░ рд╣рдорд╛рд░рд╛ рд▓рдХреНрд╖реНрдп рдЗрд╕реЗ 8 рдШрдВрдЯреЗ рдореЗрдВ рдмрдирд╛рдирд╛ рд╣реИред
рдирдП рдлреЛрдЯреЛ рд╕рд░реНрд╡рд░ рдкрд░ рдХреЗрд╡рд▓ рдореВрд▓ рдлрд╝реЛрдЯреЛ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рдФрд░ рдЙрдиреНрд╣реЗрдВ "рдЖрдХрд╛рд░" рдмрдирд╛рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рдкреНрд░реЛрд╕реЗрд╕рд░ рдкрд░ рд▓реЛрдб рдореЗрдВ рдЕрд╡рд╛рдВрдЫрдиреАрдп рд╡реГрджреНрдзрд┐ рд╣реЛрдЧреАред рдЗрд╕рд▓рд┐рдП, рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╣реА рдлрд╝реЛрдЯреЛ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдпрд╣ рдЙрдореНрдореАрдж рдХрд░рддреЗ рд╣реБрдП рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдкреВрд░реЗ рджреЗрд╢ рдХреА рдлрд╝реЛрдЯреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рдордп рдореЗрдВ рдХрдИ рдирдИ рдлрд╝реЛрдЯреЛ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдирд╣реАрдВ рд╣реЛрдЧрд╛ред
рдпрд╣реА рд╣реИ, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рд╣рдо рдХреЗрд╡рд▓ рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рддрд╕реНрд╡реАрд░реЛрдВ рдХреЛ рдХреЙрдкреА рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд╕рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдбреЗрдЯрд╛ рдХреЗ рдкреНрд░рд╡рд╛рд╕ рдХреЗ рджреМрд░рд╛рди (рдЬрдм рд╕рд╛рдЗрдЯ рдЙрд╕рдХреЗ рд▓рд┐рдП рдЕрдиреБрдкрд▓рдмреНрдз рд╣реИ рдФрд░ рд╣рдорд╛рд░реА рддрд╕реНрд╡реАрд░реЛрдВ рдореЗрдВ рдХреБрдЫ рдмрджрд▓рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ), рд╣рдо рдЬрд╛рдВрдЪрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рддрд╕реНрд╡реАрд░реЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдХреЛрдИ рдмрджрд▓рд╛рд╡ рд╣реБрдЖ рдерд╛ред рдпрджрд┐ рдкрд░рд┐рд╡рд░реНрддрди рдереЗ, рддреЛ рдлрд╝реЛрдЯреЛ рдХреЛ рдлрд┐рд░ рд╕реЗ рдХреЙрдкреА рдХрд░реЗрдВ (рдпрд╛ рдмрд▓реНрдХрд┐, rsync рдХрд░реЗрдВ), рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╣реА рд╣рдо рдбреЗрдЯрд╛ рдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдФрд░ рдбреЗрдореЛрдВрд╕ рдореЗрдВ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВрдЧреЗ, рддрд╛рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдлрд╝реЛрдЯреЛ рдХреЛ рдирдП рдлреЛрдЯреЛрд╕реЗрд╡рд░ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдФрд░ рдЕрдкрд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред
рдЬреИрд╕рд╛ рдХрд┐ рдЕрднреНрдпрд╛рд╕ рдиреЗ рджрд┐рдЦрд╛рдпрд╛ рд╣реИ, рд╣рдорд╛рд░реА рдЕрдкреЗрдХреНрд╖рд╛рдПрдВ рдкреВрд░реА рд╣реБрдИрдВ, рдФрд░ rsync рдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдмрд╣реБрдд рдХрдо рдкреНрд░рддрд┐рд╢рдд рдХреЗ рд▓рд┐рдП рджреВрд╕рд░реА рдмрд╛рд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдПрдХ рдФрд░ рд╕реАрдорд╛ рднрдВрдбрд╛рд░рдг рдбрд┐рд╕реНрдХ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдерд╛ред рд╣рдореЗрдВ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рд╕реИрдХрдбрд╝реЛрдВ рдЯреЗрд░рд╛рдмрд╛рдЗрдЯреНрд╕ рдХрд╛ рдПрдХ рдЪреИрдирд▓ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рд╡рдЬреВрдж, рд╣рдо рдкреВрд░реА рдХреНрд╖рдорддрд╛ рд╕реЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдлреЛрдЯреЛ рд╕рд░реНрд╡рд░ рдкрд░ рд▓рдЧрд╛рддрд╛рд░ рдлреЛрдЯреЛ рдЕрдкрд▓реЛрдб рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЙрдирдХреЗ рд╕рд╛рде рд╡рд┐рднрд┐рдиреНрди рдСрдкрд░реЗрд╢рди рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдорд╛рд░реА рд╕реАрдбреАрдПрди рдбрд┐рд╕реНрдХ рд╕реЗ рдЗрди рддрд╕реНрд╡реАрд░реЛрдВ рдХреЛ "рдкрдврд╝рддрд╛ рд╣реИ", рдФрд░ рдкрдврд╝рдиреЗ рдкрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рднрд╛рд░ рд░реЛрдЬрдорд░реНрд░рд╛ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХрд╛рдлреА рдзреАрдорд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдпрд╣реА рд╣реИ, рдлреЛрдЯреЛ рдкреНрд░рд╡рд╛рд╕ рдХреА рддреАрд╡реНрд░рддрд╛ рдХреГрддреНрд░рд┐рдо рд░реВрдк рд╕реЗ рд╕реАрдорд┐рдд рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред

рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди


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

CREATE TABLE MigrationPhoto ( user_id INT PRIMARY KEY, updated TIMESTAMP, photoserver VARCHAR(255), #  c   script_name VARCHAR(255), #  ,   done TINYINT(1), # 1    ,  0 KEY photoserver (photoserver), KEY script_name (script_name) ) 

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

 INSERT INTO MigrationPhoto (user_id,photoserver) VALUES (00000000, 'photoserver1') 

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

 CREATE TABLE MigrationPhotoCounters ( photoserver VARCHAR(255) PRIMARY KEY, users INT ) 

рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдорд╛рдЗрдЧреНрд░реЗрд╢рдирдлрд╝реЛрдЯреЛ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╕рдореНрдорд┐рд▓рд┐рдд рд╣реЛрдиреЗ рдкрд░ рд╣рдо рдЗрд╕реЗ рдкреЙрдкреНрдпреБрд▓реЗрдЯ рдХрд░реЗрдВрдЧреЗ:

 INSERT INTO MigrationPhotoCounters (photoserver, users) VALUES ('photoserver1', 1) ON DUPLICATE KEY UPDATE users = users + VALUES(users) 

рдпрд╛, рдорд╛рдЗрдЧреНрд░реЗрд╢рдирдлрд╝реЛрдЯреЛ рднрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣ рдХрд░реЗрдВ:

 INSERT INTO MigrationPhotoCounters (bphotos_server, users) VALUES (SELECT photoserver, COUNT(*) AS users FROM MigrationPhoto) 

рдРрд╕реА рддрд╛рд▓рд┐рдХрд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╣рдо рдХрд░реЗрдВрдЧреЗ

 SELECT photoserver FROM MigrationPhotoCounters WHERE users>0 ORDER BY RAND() 

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

 $processNumber = null; foreach ($photoservers as $serverName) { for ($i = 1; $i <= PROCESSES_PER_SERVER; $i++) { $lock = executeQuery("SELECT GET_LOCK('migration" . $serverName . '_' . $processNumber . "', 0)"); if ($lock === '1') { $processNumber = $i; break; } } if ($processNumber) { $serverName = $serverName; $scriptName = 'migration' . $serverName . '_' . $processNumber; break; } } 

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдо рджреЛ рдиреЗрд╕реНрдЯреЗрдб рдЪрдХреНрд░реЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рднреА рдлреЛрдЯреЛ рд╕рд░реНрд╡рд░ рдФрд░ рдЙрдирдХреЗ рд▓рд┐рдП рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рдХреНрд░рдордмрджреНрдз рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдВрддрд░рд┐рдХ рд▓реВрдк рдХреЗ рд╕рднреА рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ $ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдирдВрдмрд░ рдЪрд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЗрд╕ рдлреЛрдЯреЛ рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреА рд╕реАрдорд╛ рдкреВрд░реА рд╣реЛ рдЧрдИ рд╣реИ ред рдпрджрд┐ рдмрд╛рд╣рд░реА рд▓реВрдк рдХреЗ рд╕рднреА рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╕реАрдорд╛ рд╕рднреА рдлреЛрдЯреЛ рд╕рд░реНрд╡рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдкрд╣реБрдВрдЪ рдЧрдИ рд╣реИ, рдЬреЛ рдЕрднреА рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд░рдирд╛ рд╣реИред
рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдордиреЗ рдлреЛрдЯреЛрд╕реЗрд╡рд░ 1 рдЪреБрдирд╛, рдФрд░ рдпрд╣ рдЗрд╕рдХреЗ рд▓рд┐рдП рджреВрд╕рд░реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд, рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ $ scriptName = 'mig_photoserver1_2' рд╣реЛрдЧрд╛ ред
рдЖрдЧреЗ рдмрдврд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЙрди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рд╕рд╛рдорд╛рдиреНрдп рдХрддрд╛рд░ рдкрд░ рд▓реМрдЯрддреЗ рд╣реИрдВ, рдЬреЛ рдПрдХ рдХрд╛рд░рдг рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдХреЗ рд▓рд┐рдП, рдкрд┐рдЫрд▓реЗ рд▓реЙрдиреНрдЪ рдХреЗ рджреМрд░рд╛рди рд╣рдорд╛рд░реА рдкрд╕рдВрдж рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ ($ scriptName) рдХреЗ рд╕рд╛рде рдЯреИрдЧ рдХрд┐рдП рдЧрдП:

 UPDATE MIgrationPhoto SET script_name = NULL WHERE done = 0 AND script_name = 'migration_photoserver1_2' 

рд╣рдо рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рджреНрд╡рд╛рд░рд╛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдП рдЧрдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рддреЗ рд╣реИрдВ:

 UPDATE SET MigrationPhoto script_name='migration_photoserver1_2' WHERE photoserver='photoserver1' AND done = 0 AND script_name IS NULL LIMIT 100; 

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

 SELECT * FROM MigrationPhoto WHERE script_name='migration_photoserver1_2' AND done=0; 

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

 UPDATE MigrationPhoto SET updated=NOW() WHERE user_id = 00000000 

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

 BEGIN; UPDATE MigrationPhotoCounters SET users = users - 1 WHERE photoserver = 'photoserver1'; UPDATE MigrationPhoto SET done = 1 WHERE user_id = 00000000; COMMIT; 

рдРрд╕рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдЙрдард╛рдП рдЧрдП 100 рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдХреБрдЫ рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░рдгреЛрдВ рд╕реЗ рд╣рд╕реНрддрд╛рдВрддрд░рдг рдирд╣реАрдВ рдХрд░ рдкрд╛рдПрдВрдЧреЗред рдмрд╛рдж рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдХрддрд╛рд░ рдореЗрдВ рд▓реМрдЯрдирд╛ рд╣реЛрдЧрд╛:

 UPDATE MigrationPhoto SET script_name = NULL WHERE user_id IN (<failed_ids>) 

рд╣рдо рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдкреВрд░рд╛ рдХрд░рддреЗ рд╣реИрдВ:

 SELECT RELEASE_LOCK('migration_photoserver1_2') 

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдорд╛рдкреНрдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реА рдпреЛрдЬрдирд╛ рдореЗрдВ рдПрдХ рдореМрд▓рд┐рдХ рджреЛрд╖ рд╣реИред
рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реБрд░реВ рд╣реЛ рдЧрдИ рд╣реИ рдЬрд┐рд╕рдореЗрдВ $ scriptName = 'mig_photoserver1_10' рд╣реИ , рдЬрдмрдХрд┐ PROCESSES_PER_SERVER = 10 ред рдФрд░ рдпрд╣ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЧрд┐рд░ рдЧрдИ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдпрд╣ рдХрддрд╛рд░ рдореЗрдВ рдирд╣реАрдВ рд▓реМрдЯрдиреЗ рдкрд░ред рдЗрди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЪреБрдиреЗ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╛ рддреЛ рд╕рдорд╛рди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдиреА рд╣реЛрдЧреА, рдпрд╛ рдХрд┐рд╕реА рдХреЛ рдЗрди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ script_name = NULL рдореЗрдВ рд╕реЗрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЙрд╕реА $ рд╕реНрдХреНрд░рд┐рдкреНрдЯрдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реБрд░реВ рдХрд░рдирд╛ рдЕрдм рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдлрд╝реЛрдЯреЛрдлрд╝рд╛рдЙрдВрдЯрд░реНрд╕ рдореЗрдВ 100 рдлрд╝реЛрдЯреЛрдЧреНрд░рд╛рдлрд╝рд░ рд╣реИрдВ, рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рдХреБрд▓ рд╕рдВрдЦреНрдпрд╛ рдХреА рд╕реАрдорд╛ 50 рд╣реИ, рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдкрд░ рд╕реАрдорд╛ рдПрдХ - 10 рд╣реИ, рддреЛ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдпрджрд┐ рдХрд┐рд╕реА рдмрд┐рдВрджреБ рдкрд░ рдПрдХ рдлреЛрдЯреЛ рд╕рд░реНрд╡рд░ рдкрд░ 10 рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ рдереАрдВ, рддреЛ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдпрд╣ рдлреЛрдЯреЛ рд╕рд░реНрд╡рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдХреЗрд╡рд▓ рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдПрдХ рдФрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦреЗрдВрдЧреЗ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдмрд╛рд░ рдПрдХ рдорд┐рдирдЯ script_name = рдЙрди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП NULL рд╕реЗрдЯ рдХрд░реЗрдЧрд╛, рдЬрд┐рдирдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдБ рдЕрднреА рдЪрд▓ рд░рд╣реА рд╣реИрдВ:

 foreach ($photoservers as $serverName) { for ($i = 1; $i <= PROCESSES_PER_SERVER; $i++) { $lock = executeQuery("SELECT GET_LOCK('migration" . $serverName . '_' . $processNumber . "', 0)"); if ($lock === '1') { executeQuery("UPDATE MigrationPhoto SET script_name = NULL WHERE done = 0 AND script_name = 'migration" . $serverName . '_' . $processNumber . "'"); } } } 

рдЕрдм, рднрд▓реЗ рд╣реА рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рд╣реЛ рдЬрд╛рдП, рдЗрд╕рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдиреНрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реЛ рдЬрд╛рдПрдВрдЧреЗред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ "рдлрд╝реНрд▓рд╛рдИ рдкрд░" рдПрдХ рдлреЛрдЯреЛ рд╕рд░реНрд╡рд░ рдкреНрд░рддрд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреА рд╕реАрдорд╛ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред
рдЬрдм рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкреВрд░реА рд╣реЛ рдЬрд╛рддреА рд╣реИ рдФрд░ рдЕрдиреНрдп рд╕рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдбреЗрдЯрд╛ рдХрд╛ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рд╢реБрд░реВ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ рдХрд┐ рдорд╛рдЗрдЧреНрд░реЗрд╢рдирдлрд╝реЛрдЯреЛ рдЯреЗрдмрд▓ рдХреЗ рдЕрджреНрдпрддрди рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕рдордп рдХреЗ рдмрд╛рдж рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдлрд╝реЛрдЯреЛ рдирд╣реАрдВ рдмрджрд▓реА рдЧрдИ рд╣реИред рдФрд░ рдЕрдЧрд░ рд╡реЗ рдмрджрд▓ рдЧрдП, рддреЛ рдмрд╕ rsync рджреЛрд╣рд░рд╛рдПрдВред рдЗрд╕рдореЗрдВ рдЕрдзрд┐рдХ рд╕рдордп рдирд╣реАрдВ рд▓рдЧреЗрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рд▓рдЧрднрдЧ рдХреЛрдИ рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ 2-3 рджрд┐рдиреЛрдВ рдореЗрдВ рдЕрдкрдиреА рд╕рднреА рддрд╕реНрд╡реАрд░реЗрдВ рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИред
рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ 63 рдлреЛрдЯреЛ рд╕рд░реНрд╡рд░ рдереЗ рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рд╣рдо рдлреЛрдЯреЛ рдкрдврд╝рддреЗ рд╣реИрдВ, рдФрд░ 30 рд╕рд░реНрд╡рд░ рдЬрд┐рд╕ рдкрд░ рд╣рдордиреЗ рд▓рд┐рдЦрд╛ рдерд╛ред рдпрд╣ рд╕рдм 80 рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рд╣реБрдЖ, рдЬрд┐рд╕рдореЗрдВ рдкреНрд░рддрд┐ рдлреЛрдЯреЛ рд╕рд░реНрд╡рд░ рдореЗрдВ 3 рд╕реЗ рдЕрдзрд┐рдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рд╕реАрдорд╛ рдирд╣реАрдВ рдереАред рдЗрди рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХреЗ рд╕рд╛рде, рдпрд╛рддрд╛рдпрд╛рдд 150 рдПрдордмреАрдкреАрдПрд╕ рдерд╛ред рдерд╛рдИрд▓реИрдВрдб рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рддрд╕реНрд╡реАрд░реЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рддреАрди рджрд┐рдиреЛрдВ рд╕реЗ рдереЛрдбрд╝рд╛ рдХрдо рд╕рдордп рд▓рдЧрд╛ред рдбреЗрдЯрд╛ рдХреА рдорд╛рддреНрд░рд╛ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рд╣рдореЗрдВ рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓рд╛ред

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


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

рдПрдВрдЯреЛрди рд╕реНрдЯреЗрдкрд╛рдиреЗрдВрдХреЛ, рдЯреАрдо рд▓реАрдб, рдкреАрдПрдЪрдкреА рдбреЗрд╡рд▓рдкрд░

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


All Articles