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

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

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

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

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

рдЬрдм рдЗрд╕ рддрд╕реНрд╡реАрд░ рдХреЛ рджреЗрдЦ рдЕрдирдЬрд╛рдиреЗ
рдореЗрдВ рд▓реБрдЧреЛрд╡рд╕реНрдХреА рдХреЗ
рдмрдпрд╛рди рдХреЛ рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВ
"рдореВрдврд╝ рдФрд░ рд╣рд╛рд╕реНрдпрд╛рд╕реНрдкрдж рд╡рд╛рд╕реНрддреБрд╢рд┐рд▓реНрдк рдкрд░ рдорд╛рдирд╡реАрдп рдХрд▓реНрдкрдирд╛ рдЕрд╕реАрдо рд╣реИ ..."
рд╣рдо рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдореЗрдВ рдкреНрд░рдпреЛрдЬреНрдп рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдХрддрд╛рд░рдмрджреНрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореМрдЬреВрджрд╛ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред

рд╣рдорд╛рд░реА рдкрд╕рдВрдж рдЕрдкрд╛рдЪреЗ ActiveMQ рдкрд░ рдЧрд┐рд░ рдЧрдИ (рд╣рдордиреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕реЗ рдФрд░ рд░реИрдмрд┐рдЯрдПрдордХреНрдпреВ рдХреЗ рдмреАрдЪ рдЪреБрдирд╛)
рдкреЗрд╢реЗрд╡рд░реЛрдВ:- рдмрд╣реБрдд рддреЗрдЬ рд╣реИ
- рдмрд╣реБрдд рд╕реНрдерд┐рд░
- рд╕реНрдЯреЙрдореНрдк рд╕рд╣рд┐рдд рдХрдИ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди
- ZendFramework рдореЗрдВ рдЗрдВрдЯрд░реИрдХреНрд╢рди рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИ
- рд╕рднреА рд╢реНрд░реЛрддрд╛рдУрдВ (рддрдерд╛рдХрдерд┐рдд рд╡рд┐рд╖рдп) рдХреЛ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИ
- рд╕рдордп-рд╕реАрдорд╛ рджреНрд╡рд╛рд░рд╛ рд▓рдВрдмрд┐рдд рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЬрдЧрд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо
- рддрд░рд╛рдЬреВ рдЕрдЪреНрдЫреА рддрд░рд╣
рдорд╛рдЗрдирд╕ : рдХрддрд╛рд░ рдореЗрдВ рд╕рдВрджреЗрд╢реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ
Aleks_raiden
habrayuzer рд╕реЗ рдХрддрд╛рд░ рдкреНрд░рдмрдВрдзрдХреЛрдВ рдХрд╛ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддреГрдд рдЕрд╡рд▓реЛрдХрди рдпрд╣рд╛рдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
http://habrahabr.ru/blogs/hi/44907/http://habrahabr.ru/blogs/hi/45891/рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рдЬреЛ рд╕реАрдзреЗ рд╡рд┐рд╖рдп рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХреА рдЬрд╛ рд╕рдХрддреА рдереА, рдпрд╣ рдЙрди рдШрдЯрдирд╛рдУрдВ рдХреА рд╡рд╕реВрд▓реА рдереА рдЬреЛ рддрдм рд╣реЛ рд╕рдХрддреА рд╣реИ рдЬрдм рдзреВрдордХреЗрддреБ рдХрд╛ рдХрдиреЗрдХреНрд╢рди рдЧреБрд▓рд╛рдм рд╕реЗ рдкрд╣рд▓реЗ рдЯреВрдЯ рдЧрдпрд╛ рдерд╛ (рдпрд╣ рд╡рд┐рд╖рдп рддрдВрддреНрд░ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рд╡реНрдпрдХреНрддрд┐рдЧрдд рдХрддрд╛рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди ...)
рд╣рдордиреЗ рддрд╛рдЬрд╛ рдПрди рдШрдЯрдирд╛рдУрдВ рдХреЛ рд╕рд╛рдЭрд╛ рд╕реНрдореГрддрд┐ рдореЗрдВ рд░рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рддрд╛рдХрд┐ рдзреВрдордХреЗрддреБ рддреБрд░рдВрдд рдЕрдкрдиреЗ рд╕рдВрджрд░реНрдн рдХреЛ рдмрд╣рд╛рд▓ рдХрд░ рд╕рдХреЗред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:

Brenchmarki
рдЖрд╡реЗрджрди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ ZendFramework рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред Ajax рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕рдВрдмрдВрдзрд┐рдд рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреЛ рднреЗрдЬрд╛ рдЧрдпрд╛ рдерд╛, рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдЙрдиреНрд╣реЗрдВ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдФрд░ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдПрдХ рдХрддрд╛рд░ рдореЗрдВ рд░рдЦрд╛, рдЬрд╣рд╛рдВ рд╕реЗ рдзреВрдордХреЗрддреБ рдиреЗ рд╕рдВрджреЗрд╢ рд▓реЗ рд▓рд┐рдпрд╛ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЛ рднреЗрдЬрд╛ред ZendFramework рдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ рдЕрдВрджрд░ рд╕реНрд╡рдпрдВ рдзреВрдордХреЗрддреБ рдХреЛ рднреА Action рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
Apache Branchmark рдХреЛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реБрдП, рд╣рдо рдпрд╣ рдЬрд╛рдирдХрд░ рднрдпрднреАрдд рдереЗ рдХрд┐ рд╕рд┐рд╕реНрдЯрдо рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ 25 рдПрдХ рд╕рд╛рде рдПрдХреНрд╕реЗрд╕ рдХреЗ рд╕рд╛рде рдкреНрд░реЛрд╕реЗрд╕рд░ рдЦрд╛ рд░рд╣рд╛ рд╣реИред
25 рдПрдХ рд╕рд╛рде рд╕реВрддреНрд░ рдХреЗ рд▓рд┐рдП 300 рдЕрдиреБрд░реЛрдзрдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдирд┐рдХрд▓рд╛, ZendFramework рдЖрд░рдВрднреАрдХрд░рдг рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрдиреЗрдХреНрд╢рди рдиреЗ 99% рд╕рдордп рд▓рд┐рдпрд╛ред рд╣реЗ-рдСрдкреНрд╕ред рдЦреИрд░, рдпрд╣ рдкреБрд░рд╛рдиреА рдЦрдмрд░ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЗрд▓рд╛рдЬ рдЬреНрдЮрд╛рдд рд╣реИ - рдЖрдкрдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рд▓реЛрдЧреЛрдВ рдХреЛ рдЫреЛрдбрд╝рдХрд░, ZendFramework рд╡рд░реНрдЧреЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдФрд░ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рд╡рд░реНрдЧреЛрдВ рдХреЛ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░реЗрдВред
рд╣рдо рдЗрд╕ рдирд┐рд╖реНрдХрд░реНрд╖ рдкрд░ рдкрд╣реБрдВрдЪреЗ рдХрд┐ рд╣рдореЗрдВ рдорддрджрд╛рди рдФрд░ рдЪреИрдЯ рдХреЗ рд▓рд┐рдП рдЕрдЬрд╛рдХреНрд╕-рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдзреВрдордХреЗрддреБ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рднреА рдПрдорд╡реАрд╕реА рдврд╛рдВрдЪреЗ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдЫреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ (рдЪреВрдВрдХрд┐ рдЗрд╕рдХреА рд▓реЙрдиреНрдЪ рдЧрддрд┐ рдХреЗрд╡рд▓ рд▓рдВрдмреЗ рдЪреБрдирд╛рд╡ рддрдВрддреНрд░ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ)ред рд╣рдо рднреА ajax рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдХрд┐рд╕реА рднреА рдбреЗрдЯрд╛рдмреЗрд╕ рдкреНрд░рд╢реНрдиреЛрдВ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛ рд▓рд┐рдпрд╛ред рд╣рдордиреЗ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛ рдХреЛ рд╕рд╛рдЭрд╛ рдореЗрдореЛрд░реА рдореЗрдВ рдХреНрдпреЛрдВ рд░рдЦрд╛ред рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рд╕рд╛рдЭрд╛ рдореЗрдореЛрд░реА рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди - рддреГрддреАрдп-рдкрдХреНрд╖ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рджреНрд╡рд╛рд░рд╛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдкрд░рд┐рдгрд╛рдо
рдкреНрд░рддрд┐ 100 рдзрд╛рдЧреЗ рдкрд░ 300 рдЕрдиреБрд░реЛрдзрдХреНрд▓рд╛рдЗрдВрдЯ рд╕реЗ рдШрдЯрдирд╛рдУрдВ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд▓рдЧрднрдЧ рддрд╛рддреНрдХрд╛рд▓рд┐рдХ рд╣реЛ рдЧрдИ рд╣реИред рд╣реБрд░реНрд░реЗ, рдЬреАрдд! рд▓рд╛рдЗрдЯрд╡реЗрдЯ рдзреВрдордХреЗрддреБ рдореЗрдореЛрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░реЛрд╕реЗрд╕рд░ рдмрд╣реБрдд рдХрд┐рдлрд╛рдпрддреА рд╣реИред рдЖрд╡реЗрджрди рдХреА рд╕рдВрдХреАрд░реНрдг рдЧрд░реНрджрди рд╡реАрдбрд┐рдпреЛ рд╕реНрдЯреНрд░реАрдо рдХрд╛ рд╡рд┐рддрд░рдг рд╣реИ (рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдк рдПрдХ рд╕реНрдХреИрдВрдбрд┐рдиреЗрд╡рд┐рдпрд╛рдИ рдиреАрд▓рд╛рдореА рдХрд░рддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ рдПрдХ рд╕рдорд╛рди рдХрддрд╛рд░рдмрджреНрдз рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЛ рдкреНрд░рднрд╛рд╡реА рдврдВрдЧ рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ - рдпрд╣ рдЖрдкрдХреА рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ ;-), рд╣рдо рдЗрд╕ рд▓реЗрдЦ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓реЗрдЦреЛрдВ рдореЗрдВ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдпрджрд┐ рд╣рдо рд╣рдмрд▓ рдкреНрд░рднрд╛рд╡ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдиреАрдЪреЗ рд╣рдорд╛рд░рд╛ рдХрддрд╛рд░ рдкреНрд░рдмрдВрдзрдХ рд╣реИред
<?php require_once 'Zend/Queue.php'; require_once 'Sibirix/Queue/Smemory/Package.php'; class Sibirix_Queue_Smemory_Manager { const ERROR_BROKEN_OPTIONS_FOR_INIT_MESSAGE = "BROKEN_OPTIONS_FOR_INIT"; const ERROR_UNKNOWN_IDENTIFIER_STORAGE_MESSAGE = "UNKNOWN_IDENTIFIER_STORAGE"; const ERROR_CAN_NOT_ACTIVATE_THE_SEMAPHORE_MESSAGE = "CAN_NOT_ACTIVATE_THE_SEMAPHORE"; const SHM_VAR_LAST_CHAT_POSTS = 1; const SHM_VAR_LAST_SYSTEM_COMMAND = 2; const SHM_VAR_QUEUE_LAST_ID = 3; private $_count_chat_package_storage; private $_count_system_package_storage; private $_activeMQoptions; private $_queue; private $_sem_key; private $_app_key; private $_shared_memory_id = false; private $_shared_memory_handler = false; private $_shared_memory_size; private $_sem_id = false; private $_last_queue_message_id = false; public function __construct($options = array()) { if (!is_array($options)) { throw new Exception(self::ERROR_BROKEN_OPTIONS_FOR_INIT_MESSAGE); } if (!isset($options['sem_key'])) { throw new Exception(self::ERROR_BROKEN_OPTIONS_FOR_INIT_MESSAGE); } if (!isset($options['app_key'])) { throw new Exception(self::ERROR_BROKEN_OPTIONS_FOR_INIT_MESSAGE); } else { $options['app_key'] = (string)$options['app_key']; if (strlen($options['app_key']) != 1) { throw new Exception(self::ERROR_BROKEN_OPTIONS_FOR_INIT_MESSAGE); } } if (!isset($options['activeMQ'])) { throw new Exception(self::ERROR_BROKEN_OPTIONS_FOR_INIT_MESSAGE); } if (!isset($options['shared_memory_size'])) { throw new Exception(self::ERROR_BROKEN_OPTIONS_FOR_INIT_MESSAGE); } if (!isset($options['count_chat_package_storage'])) { throw new Exception(self::ERROR_BROKEN_OPTIONS_FOR_INIT_MESSAGE); } if (!isset($options['count_system_package_storage'])) { throw new Exception(self::ERROR_BROKEN_OPTIONS_FOR_INIT_MESSAGE); } $this->_sem_key = $options['sem_key']; $this->_app_key = $options['app_key']; $this->_activeMQoptions = $options['activeMQ']; $this->_shared_memory_size = $options['shared_memory_size']; $this->_count_chat_package_storage = $options['count_chat_package_storage']; $this->_count_system_package_storage = $options['count_system_package_storage']; $this->_sem_id = sem_get($this->_sem_key, 1); $this->_shared_memory_id = ftok(".", $this->_app_key); $this->_shared_memory_handler = shm_attach($this->_shared_memory_id, $this->_shared_memory_size); } public function connectTopic() { if (!$this->_queue) { $this->_queue = new Zend_Queue('Activemq', $this->_activeMQoptions); } return $this->_queue; } public function receive() { $this->connectTopic(); $message = false; $msg_receive = $this->_queue->receive(1); foreach ( $msg_receive as $msg ) { $pkg = new Sibirix_Queue_Smemory_Package($msg->body); $this->_last_queue_message_id = $pkg->id; $message = $pkg; } return $message; } public function receiveAll() { $this->connectTopic(); $last_queue_message_id_mem = $this->_sem_getLastQueueMessageId(); $messages = array(); while(true) { $msg_receive = $this->_queue->receive(1); if (!$msg_receive->count()) {break;} foreach ( $msg_receive as $message ) { $pkg = new Sibirix_Queue_Smemory_Package($message->body); $this->_last_queue_message_id = $pkg->id; $messages[] = $pkg; } if ($this->_last_queue_message_id >= $last_queue_message_id_mem ) { $last_queue_message_id_mem = $this->_sem_getLastQueueMessageId(); if ($this->_last_queue_message_id >= $last_queue_message_id_mem ) { break; } } } return $messages; } public function send($action, $data, $recipient = false) { $this->connectTopic(); $package = new Sibirix_Queue_Smemory_Package($action, $data, $recipient); $this->_lock(); $last_queue_message_id_mem = $this->_getLastQueueMessageId(); $last_queue_message_id_mem++; $this->_setLastQueueMessageId($last_queue_message_id_mem); $this->_queue->send( $package->normalize( $last_queue_message_id_mem ) ); if ( $package->isPost() ) { $this->_savePackageToChatStorage( $package ); } else { $this->_savePackageToSystemStorage( $package ); } $this->_unlock(); return $last_queue_message_id_mem; } private function _getLastQueueMessageId() { $last_queue_message_id_mem = shm_get_var($this->_shared_memory_handler, self::SHM_VAR_QUEUE_LAST_ID); if (!$last_queue_message_id_mem) { shm_put_var($this->_shared_memory_handler, self::SHM_VAR_QUEUE_LAST_ID, 0); $last_queue_message_id_mem = 0; } return $last_queue_message_id_mem; } private function _setLastQueueMessageId($id) { shm_put_var($this->_shared_memory_handler, self::SHM_VAR_QUEUE_LAST_ID, $id); return true; } private function _sem_getLastQueueMessageId() { $this->_lock(); $last_queue_message_id_mem = $this->_getLastQueueMessageId(); $this->_unlock(); return $last_queue_message_id_mem; } private function _savePackageToChatStorage( $package ) { $last_chat_posts = shm_get_var($this->_shared_memory_handler, self::SHM_VAR_LAST_CHAT_POSTS); if (!$last_chat_posts) {$last_chat_posts=array();} if (count($last_chat_posts) >= $this->_count_chat_package_storage) { while(count($last_chat_posts) >= $this->_count_chat_package_storage) { array_shift($last_chat_posts); } } array_push($last_chat_posts, $package->normalize()); shm_put_var($this->_shared_memory_handler, self::SHM_VAR_LAST_CHAT_POSTS, $last_chat_posts); } private function _savePackageToSystemStorage($package) { $last_sys_cmd = shm_get_var($this->_shared_memory_handler, self::SHM_VAR_LAST_SYSTEM_COMMAND); if (!$last_sys_cmd) {$last_sys_cmd=array();} if (count($last_sys_cmd) >= $this->_count_system_package_storage) { while(count($last_sys_cmd) >= $this->_count_system_package_storage) { array_shift($last_sys_cmd); } } array_push($last_sys_cmd, $package->normalize()); shm_put_var($this->_shared_memory_handler, self::SHM_VAR_LAST_SYSTEM_COMMAND, $last_sys_cmd); } public function getLastPackage($storage) { if ( $storage != self::SHM_VAR_LAST_SYSTEM_COMMAND && $storage != self::SHM_VAR_LAST_CHAT_POSTS ) { throw new Exception(self::ERROR_UNKNOWN_IDENTIFIER_STORAGE_MESSAGE); } $this->_lock(); $last_packages = shm_get_var($this->_shared_memory_handler, $storage); if (!$last_packages) {$last_packages=array();} $this->_unlock(); $return_last_packages = array(); foreach($last_packages as $normalize_package) { $package = new Sibirix_Queue_Smemory_Package($normalize_package); $return_last_packages[] = $package; } return $return_last_packages; } private function _lock() { if (!sem_acquire($this->_sem_id)) { throw new Exception(self::ERROR_CAN_NOT_ACTIVATE_THE_SEMAPHORE_MESSAGE); } } private function _unlock() { sem_release($this->_sem_id); } public function resetMemory() { $this->_lock(); shm_put_var($this->_shared_memory_handler, self::SHM_VAR_LAST_CHAT_POSTS, array()); shm_put_var($this->_shared_memory_handler, self::SHM_VAR_LAST_SYSTEM_COMMAND, array()); $this->_setLastQueueMessageId(0); $this->_lock(); } public function getLastQueueMessageId() { $this->_lock(); $last_queue_message_id_mem = $this->_getLastQueueMessageId(); $this->_unlock(); return $last_queue_message_id_mem; } } ?>
<?php class Sibirix_Queue_Smemory_Package { const ERROR_NOT_SUPPORTED_TYPE_ACTION_MESSAGE = 'ERROR_NOT_SUPPORTED_TYPE_ACTION'; const ERROR_FOR_NORMALIZE_NEED_ID_MESSAGE = 'FOR_NORMALIZE_NEED_ID'; const CHAT_ACTION = 'pasteChatMessages'; private $_supported_actions = array( 'updateRating', 'setChannel', 'pasteChatMessages', 'updateTimer', 'connectToServer', 'statistics' ); private $_read_private_property = array( 'id','action','time','data','recipient' ); private $_action; private $_data; private $_recipient; private $_time; private $_id; public function __construct() { $fg_args = func_get_args(); if (count($fg_args) == 1) { list( $this->_id, $this->_action, $this->_time, $this->_data, $this->_recipient ) = unserialize($fg_args[0]); } else { list($action, $data, $recipient) = $fg_args; $this->_validation($action, $data, $recipient); $this->_action = $action; $this->_data = $data; $this->_time = $this->_getmicrotime(); $this->_recipient = $recipient; } } public function normalize( $id = false ) { if ($id) { $this->_id = $id; } else { if ($this->_id === null) { throw new Exception(self::ERROR_FOR_NORMALIZE_NEED_ID_MESSAGE); } } return serialize(array( 0 => $this->_id, 1 => $this->_action, 2 => $this->_time, 3 => $this->_data, 4 => $this->_recipient )); } private function _validation($action, $data, $recipient) { if (!in_array($action, $this->_supported_actions)) { throw new Exception(self::ERROR_NOT_SUPPORTED_TYPE_ACTION_MESSAGE); } return true; } private function _getmicrotime() { list($usec, $sec) = explode(' ', microtime()); return number_format(((float)$usec + (float)$sec), 2, '.', ''); } public function __get($key) { if (in_array($key, $this->_read_private_property)) { return $this->{'_'.$key}; } return null; } public function isPost() { if ( $this->_action == self::CHAT_ACTION ) { return true; } return false; } } ?>
рдирд┐рд╖реНрдХрд░реНрд╖
- рдХрддрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдкреНрд░рдмрдВрдзрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕рдХреНрд░рд┐рдп рдПрдордХреНрдпреВ рдиреЗ рдЕрдЪреНрдЫрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдпрд╛ред
- рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рднреЗрдЬреЗ рдЧрдП рдзреВрдордХреЗрддреБ рдФрд░ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХреЛ рд╣рд▓реНрдХреЗ рд▓рд┐рдкрд┐рдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдмрд┐рдирд╛ рдлреНрд░реЗрдорд╡рд░реНрдХ, рдбреЗрдЯрд╛рдмреЗрд╕ рдХрдиреЗрдХреНрд╢рди рдФрд░ рдЕрдиреНрдп рдЬреНрдпрд╛рджрддрд┐рдпреЛрдВ рдХреЗ рдкреВрд░реНрдг рдЖрд░рдВрдн рдХреЗред рдзрдиреНрдпрд╡рд╛рдж рдЯреЛрдкреАред
рдЕрдм, рдкрде рдХреНрдпрд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рд╕рд┐рд░реНрдл рдбрд░рд╛рд╡рдирд╛ рд╣реИред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЗрд╕ рд▓реЗрдЦ рд╕реЗ рд╣реИрдмрд░рдЪрд┐рдпрди рдХреЛ рд╕рд╣реА рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓рдиреЗ рдФрд░ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╣рдорд╛рд░реА рдЧрд▓рддрд┐рдпреЛрдВ рдХреЛ рди рджреЛрд╣рд░рд╛рдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓реЗрдЧреАред
рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдореБрдЭреЗ рд╕рд╡рд╛рд▓реЛрдВ рдФрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рд╕реБрдирдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреА рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЬрд╡рд╛рдм рджреЗрдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред
рдпреБрдкреАрдбреАред рдкрд╛рдардХреЛрдВ рдХреЗ рдЕрдиреБрд░реЛрдз рдкрд░ - рдореИрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рддрд╛ рд╣реВрдБ
http://feelyoustar.com/