рдЬрдЯрд┐рд▓ рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рдбреАрдмрдЧ рдХрд░рдирд╛ - рдЙрддреНрдкрд╛рджрди рд╕рд░реНрд╡рд░ рдкрд░ рдПрдХ рдкреНрд░рднрд╛рд╡реА рдмрдЧ рдХреЛрд▓реНрд╣реВ

рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░!

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



рдкреВрд░реНрдг рдкрд░реАрдХреНрд╖рдг рдХрд╛ рдорд┐рдердХ



рдПрдХреНрд╕рдкреА / рдЯреАрдбреАрдбреА рд╕реЗ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдЙрдЬреНрдЬреНрд╡рд▓ рдФрд░ рдЙрдЬреНрдЬреНрд╡рд▓ рдорд┐рдердХ рд╣реИ рдХрд┐ рдЖрдк 100% рдореЙрдбреНрдпреВрд▓рд░ рдФрд░ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдХрд╡рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╕реЗрд▓реЗрдирд┐рдпрдо рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рд▓рд┐рдЦреЗрдВ рдЬреЛ рдмрд╛рд╣рд░ рд╕реЗ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдмрд┐рдирд╛ рдбрд░ тАЛтАЛрдХреЗ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдирд┐рд░рдВрддрд░ рдПрдХреАрдХрд░рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓рдбрд╝рд╛рдИ рдореЗрдВ рдбрд╛рд▓рддреЗ рд╣реИрдВред :-) рдпрд╣ "рдкреНрдпрд╛рд░ рд╕реЗ рдХрдмреНрд░ рдФрд░ рдореМрдд рд╕реЗ рдкрд╣рд▓реЗ рдкрд░рд┐рд╡рд░реНрддрди" рдХреА рд╢реНрд░реЗрдгреА рд╕реЗ рдПрдХ рд░реЛрдорд╛рдВрд╕ рд╣реИ, рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рд╕реЗ рдмрд╣реБрдд рджреВрд░ рд╣реИ рдФрд░ рдпрд╣реА рдХрд╛рд░рдг рд╣реИ:
  1. рдмрд╣реБрдд рд▓реЙрдиреНрдЪ рд╣реЛрдиреЗ рддрдХ, рд╡реЗрдм рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдореЗрдВ рд▓рдЧрд╛рддрд╛рд░ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрддрд╛ рд░рд╣реЗрдЧрд╛ред рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдЖрдк рдЙрдиреНрд╣реЗрдВ рдареАрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рд▓реЗрдХрд┐рди рд▓реЙрдиреНрдЪ рд╕реЗ рдкрд╣рд▓реЗ, рдкреНрд░рдмрдВрдзрдХ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдирд╛рдЬреА рдореБрд╕реНрдХрд╛рди рдФрд░ "рддрддреНрдХрд╛рд▓, рдЖрдЬ" рд╢рдмреНрджреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдореБрд╕реНрдХрд╛рди рдЦреАрдВрдЪреЗрдВрдЧреЗред
  2. рдЕрдЧрд░ рд╕рдм рдХреБрдЫ рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рд╕реЗ рдврдВрдХрд╛ рд╣реИ, рддреЛ рдкрд░реНрдпрд╛рдкреНрдд рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдФрд░ рд╕рдордп рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдореЗрд░рд╛ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХрд░реЛред рдЕрдХреНрд╕рд░ рдЕрдореЗрдЬрд╝реЕрди рдПрдкреАрдЖрдИ рдореЗрдВ рдирдХрд▓реА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд▓рд┐рдЦрдиреЗ рдЬреИрд╕реЗ рд╡рд┐рдЪрд▓рди рд╣реЛрддреЗ рд╣реИрдВ , рдЖрдк рдЕрднреА рднреА рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ :-)
  3. рдпрджрд┐ рд▓реЗрдЖрдЙрдЯ рдЕрдХреНрд╕рд░ рдХрд┐рд╕реА рд╡реЗрдм рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛрдЧрд╛, рд╕реЗрд▓реЗрдирд┐рдпрдо- рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдЕрджреНрдпрддрд┐рдд рд░рдЦрдирд╛ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рд╣реИ
  4. рдХреБрдЫ рдЪреАрдЬреЗрдВ, рдЬреИрд╕реЗ рд▓реЛрдб рдХреЗ рддрд╣рдд рд╕рд╛рдЗрдЯ рд╕реНрдерд┐рд░рддрд╛, рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИред рдЖрдкрдХреЛ рдЕрдкрдирд╛ рд╕рд┐рд░ рддреЛрдбрд╝рдиреЗ рдФрд░ рдПрдХ рд▓реЛрдб рдпреЛрдЬрдирд╛ рдХреЗ рд╕рд╛рде рдЖрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрднреА рднреА рдЕрд▓рдЧ рд╣реЛрдЧрд╛ред
  5. рд╣рдо рд╕рд╣рдЬ рдЬреНрдЮрд╛рди рдпреБрдХреНрдд ... рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕рдореЗрдВ рдХреАрдбрд╝реЗ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдЪрд╛рдирдХ рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреЗред рдЗрд╕рд▓рд┐рдП рд╣рдо PHP рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдХрд╡рд░ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ?
  6. рдЖрджрд┐

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдпрджрд┐ рдЖрдк рдЕрднреА рднреА рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдкрд░реАрдХреНрд╖рдг рдЖрдкрдХреЛ 100% рд╕рдорд╕реНрдпрд╛рдУрдВ рд╕реЗ рдмрдЪрд╛рдПрдЧрд╛ рдФрд░ рдХреЛрдб рд╕реЗ 2 рдЧреБрдирд╛ рдЕрдзрд┐рдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рддреЛ рдЖрдк рдЖрдЧреЗ рдирд╣реАрдВ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ - рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд░реЛрдореЗрдВрдЯрд┐рдХреНрд╕ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд╣реИ :-)

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

PHP рдбреАрдмрдЧрд┐рдВрдЧ рдЙрдкрдХрд░рдг


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

рд▓рдбрд╝рд╛рдИ рдореЗрдВ рдбрд┐рдмрдЧрд┐рдВрдЧ



рд╕рдм рдХреБрдЫ рд▓реЙрдЧ рдЗрди рдХрд░реЗрдВ

рдпрд╣ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реИ рдпрджрд┐ рд▓реЛрдб рдЖрдкрдХреЛ рдпреБрджреНрдз рдХреЗ рд╕рд░реНрд╡рд░ рдкрд░ nginx, Apache, php-fpm рд▓реЙрдЧ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рддреЛ рдЕрдкрдиреЗ рд╡реНрдпрд╡рд╕рд╛рдп рд╕рдВрдЪрд╛рд▓рди рд▓реЙрдЧ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдмрдирд╛рдП рд░рдЦреЗрдВ (рд╡рд┐рд╢реЗрд╖ рдСрд░реНрдбрд░ рдмрдирд╛рдХрд░, 1C-Bitrix рд╕реЗ SAP, рдЖрджрд┐) рдореЗрдВ рдирд┐рд░реНрдпрд╛рдд рдХрд░реЗрдВред
рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ PHP рдХреЗ рд╕рд╛рде рдПрдХ рд╡реЗрдм рдХреНрд▓рд╕реНрдЯрд░ рдпрд╛ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╕рд░реНрд╡рд░ рд╣реИрдВ, рддреЛ рдПрдХ рдорд╢реАрди рдкрд░ рдЗрди рдорд╢реАрдиреЛрдВ рд╕реЗ рд▓реЙрдЧ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ, рдЬрд╣рд╛рдВ рдЙрдиреНрд╣реЗрдВ рдХреЗрдВрджреНрд░реАрдп рд░реВрдк рд╕реЗ рдореЙрдирд┐рдЯрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред Bitrix24 рдореЗрдВ , рд╣рдо рдЗрд╕рдХреЗ рд▓рд┐рдП syslog-ng рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдПрдХ рд╣реА рдорд╢реАрди рдореЗрдВ рд╕рднреА рдХреНрд▓рд╕реНрдЯрд░ рд╕рд░реНрд╡рд░реЛрдВ рд╕реЗ рдПрдХ PHP рддреНрд░реБрдЯрд┐ рд▓реЙрдЧ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдПрдХ рджреБрд░реНрдШрдЯрдирд╛ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдорд╢реАрдиреЛрдВ рдкрд░ рдЕрдкрдиреА рдЖрдВрдЦреЛрдВ рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдЪрд▓рдирд╛ рд╣реИред рд╕реНрдХреНрд░реАрди рдЪрд▓рд╛рдПрдВ рдФрд░ рдЖрдк рдЕрджреНрдпрддрд┐рдд рд╣реИрдВред

"рдмреИрдЯрд▓" рдкреНрд░реЛрдлрд╛рдЗрд▓рд░ - xhprof

рд╕реМрднрд╛рдЧреНрдп рд╕реЗ PHP рдбреЗрд╡рд▓рдкрд░реНрд╕ рдФрд░ рдкреНрд░рд╢рд╛рд╕рдХреЛрдВ рдХреЗ рд▓рд┐рдП, рдлреЗрд╕рдмреБрдХ рдХреЗ рд╕рд╣рдпреЛрдЧрд┐рдпреЛрдВ рдиреЗ рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ рдФрд░ рдЙрдкрдпреЛрдЧреА "рд▓рдбрд╝рд╛рдИ" рдкреНрд░реЛрдлрд╛рдЗрд▓рд░ рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦрд╛ рдФрд░ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рд╣реИ - xhprof ред рдпрджрд┐ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕ рдЙрдкрдХрд░рдг рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реИрдВ - рдЗрд╕рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░реЗрдВред 2 рдХреНрд▓рд┐рдХ рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдФрд░ 5 рдЯрди рдкрд░ рд▓рд╛рднред

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

рдФрд░ рдпрд╣ рднреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкрде - рдХреНрдпрд╛ рд▓рдбрд╝рд╛рдИ рдореЗрдВ рдХреБрдЫ рдмрд╛рдзрд╛:

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

рдЧрддрд┐рд╢реАрд▓ рдЕрдиреБрд░реЗрдЦрдг

рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рд╡реЗрдм рдХреНрд▓рд╕реНрдЯрд░ рд╣реИ , рддреЛ рдЕрдХреНрд╕рд░ рдбрд╛рдпрдирд╛рдорд┐рдХ рдкреНрд░реЛрдлрд╛рдЗрд▓рд┐рдВрдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрддрд╛ рд╣реИред рдиреАрдЪреЗ рдХреА рд░реЗрдЦрд╛ рд╕рд░рд▓ рд╣реИ - рдкреНрд░реЛрдлрд╛рдЗрд▓рд░ рд╣рдореЗрд╢рд╛ рдЪрд╛рд▓реВ рд╣реЛрддрд╛ рд╣реИ, рдкреГрд╖реНрда рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рд╣рдо рд╣рд┐рдЯ рд╕рдордп рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдпрджрд┐ рдпрд╣ рд▓рдВрдмрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 2 рд╕реЗрдХрдВрдб, рдПрдХ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЯреНрд░реЗрд╕ рд╕рд╣реЗрдЬреЗрдВред рд╣рд╛рдВ, рдпрд╣ рдЕрддрд┐рд░рд┐рдХреНрдд 50-100 рдПрдордПрд╕ рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдЖрдк рд╕рд┐рд╕реНрдЯрдо рдЪрд╛рд▓реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рдкреНрд░рддреНрдпреЗрдХ рдХреЛ рдЪрд╛рд▓реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЯреЗрдВрдЯ рд╣рд┐рдЯред
auto_prepend_file.php: //     ,     if (isset($_GET['profile']) && $_GET['profile']=='Y') { setcookie("my_profile", "Y"); } if (isset($_GET['profile']) && $_GET['profile']=='N') { setcookie("my_profile", "",time() - 3600); } if ( !( isset($_GET['profile']) && $_GET['profile']=='N') && ( $_COOKIE['my_profile']=='Y' || ( isset($_GET['profile']) && $_GET['profile']=='Y') ) && extension_loaded('xhprof') ) { xhprof_enable(); } 


 dbconn.php: //     ,       PHP (http://php.net/manual/ru/function.microtime.php) //Forcing storing trace, if req.time > N secs $profile_force_store = false; $ar_pinba = pinba_get_info(); if ($ar_pinba['req_time']>2) $profile_force_store=true; ... if ($profile_force_store || ( !(isset($_GET['profile']) && $_GET['profile']=='N') && ( $_COOKIE['my_profile']=='Y' || ( isset($_GET['profile']) && $_GET['profile']=='Y' )) && extension_loaded('xhprof') ) { $xhprof_data = xhprof_disable(); $XHPROF_ROOT = realpath(dirname(__FILE__)."/perf_stat"); include_once $XHPROF_ROOT . "/xhprof_lib/utils/xhprof_lib.php"; include_once $XHPROF_ROOT . "/xhprof_lib/utils/xhprof_runs.php"; // save raw data for this profiler run using default // implementation of iXHProfRuns. $xhprof_runs = new XHProfRuns_Default(); // save the run under a namespace "xhprof_foo" $run_id = $xhprof_runs->save_run($xhprof_data, "xhprof_${_SERVER["HTTP_HOST"]}_".str_replace('/','_',$_SERVER["REQUEST_URI"])); 

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

 #!/bin/bash HOSTS=`as-describe-auto-scaling-groups mygroup | grep -i 'INSTANCE' | awk '{ print $2}' | xargs ec2-describe-instances | grep 'INSTANCE' | awk '{print $4}'` for HOST in $HOSTS ; do scp -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p -i /home/trace_loader/.ssh/id_rsa "trace_loader@${HOST}:/tmp/*xhprof*" /my_profiles done 

рдЕрдм рдЖрдкрдХреЗ рдкрд╛рд╕ 2 рд╕реЗрдХрдВрдб рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдерд╛рди рдкрд░ рдПрдХрддреНрд░рд┐рдд рдХрд┐рдП рдЧрдП рдХреНрд╡реЗрд░реА рдирд┐рд╢рд╛рди рд╣реИрдВ - рдЙрдиреНрд╣реЗрдВ рдХреНрд░рдордмрджреНрдз рдХреНрд░рдо рдореЗрдВ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡реЗрдм рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд▓рд┐рдЦрдирд╛, рдЬрд┐рд╕рдореЗрдВ рд▓рдЧрднрдЧ 30 рдорд┐рдирдЯ рд▓рдЧреЗрдВрдЧреЗред рд╡реНрдпрд╡рд╕рд╛рдп рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рддреИрдпрд╛рд░ рд╣реИ - рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдЕрдиреБрдХреВрд▓рди рдХреЗ рд▓рд┐рдП рдкреНрд░рддреНрдпреЗрдХ рдЯреНрд░реЗрд╕ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ TK рд╣реИ, рдЬрд┐рд╕реЗ рдЖрдк рдХрдиреЗрдХреНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрд╕реЗ рд╡рд┐рдХрд╛рд╕ рд╕реЗ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮред

рдЧрд╣рд░рд╛ рдЧреЛрддрд╛ рд▓рдЧрд╛рдирд╛ - рд╕реНрдЯреНрд░реЗрд╕


рдХрднреА-рдХрднреА рдкреНрд░реЛрдлрд╛рдЗрд▓рд░ рдФрд░ рд▓реЙрдЧ рдлрд╛рдЗрд▓реЗрдВ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдХрд╛рд░рдг рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддреА рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЬрдм рд╡рд┐рдХрд╛рд╕ рд╕рд░реНрд╡рд░ рдкрд░ рдбреАрдмрдЧрд┐рдВрдЧ (XDebug), рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдЪрд▓рддрд╛ рд╣реИред рдПрдХ рдмрд╛рдд рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИ рдХрд┐ рдпреБрджреНрдз рд╕рд░реНрд╡рд░ рдкрд░ рдШрдЯрдирд╛ рдХреЗ рд╕рдордп рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИред рдпрд╣рд╛рдВ, рдПрдХ рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдЯреНрд░реИрд╕рд░, рдЬреИрд╕реЗ рдХрд┐ рд╕реНрдЯреНрд░реЗрд╕ , рдЕрдХреНрд╕рд░ рдЕрдореВрд▓реНрдп рд╕рд╣рд╛рдпрддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдмрд╕ рд▓рд┐рдирдХреНрд╕ рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдХреА рдирдЬрд░ рдореЗрдВ рдЕрдЯрдХрдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИ - рдореЗрд░рд╛ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХрд░реЛ, рдереЛрдбрд╝рд╛ рдзреИрд░реНрдп, 2-3 рдХрдк рдХреЙрдлреА рдФрд░ рдЖрдк рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рдХреЛ рд╕рдордЭреЗрдВрдЧреЗ рдФрд░ рд▓рдбрд╝рд╛рдИ рдХреЗ рд╕рд░реНрд╡рд░ рдкрд░ рд╕рдмрд╕реЗ рд╕реВрдХреНрд╖реНрдо рддреНрд░реБрдЯрд┐рдпреЛрдВ рдФрд░ рдмрд╛рдзрд╛рдУрдВ рдХреЛ рдкрдХрдбрд╝рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗ :-)
рдЖрдкрдХреЛ PHP рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЯреНрд░реЗрд╕рд░ рдХреЛ рдареАрдХ рд╕реЗ "рд╕рдВрд▓рдЧреНрди" рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЕрдХреНрд╕рд░ рдХрдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ рдЪрд▓рддреА рд╣реИрдВ, рд╡рд┐рднрд┐рдиреНрди рдкреВрд▓реЛрдВ рдореЗрдВ, рдЙрдиреНрд╣реЗрдВ рд▓рдЧрд╛рддрд╛рд░ рдмреБрдЭрд╛рдпрд╛ рдФрд░ рдЙрдард╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЕрдХреНрд╕рд░, рдореЗрдореЛрд░реА рд▓реАрдХ рд╕реЗ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡реЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдЬреАрд╡рдирдХрд╛рд▓ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 100 рд╣рд┐рдЯреНрд╕ рдХреЗ рд▓рд┐рдП):
ps aux | grep php
root 24166 0.0 0.0 391512 4128 ? Ss 11:47 0:00 php-fpm: master process (/etc/php-fpm.conf)
nobody 24167 0.0 0.6 409076 48168 ? S 11:47 0:00 php-fpm: pool www1
nobody 24168 0.0 0.4 401736 30780 ? S 11:47 0:00 php-fpm: pool www1
nobody 24169 0.0 0.5 403276 39816 ? S 11:47 0:00 php-fpm: pool www1
nobody 24170 0.0 1.0 420504 83376 ? S 11:47 0:01 php-fpm: pool www1
nobody 24171 0.0 0.6 408396 49884 ? S 11:47 0:00 php-fpm: pool www1
nobody 24172 0.0 0.5 404476 40348 ? S 11:47 0:00 php-fpm: pool www2
nobody 24173 0.0 0.4 404124 35992 ? S 11:47 0:00 php-fpm: pool www2
nobody 24174 0.0 0.5 404852 42400 ? S 11:47 0:00 php-fpm: pool www2
nobody 24175 0.0 0.4 402400 35576 ? S 11:47 0:00 php-fpm: pool www2
nobody 24176 0.0 0.4 403576 35804 ? S 11:47 0:00 php-fpm: pool www2
nobody 24177 0.0 0.7 410676 55488 ? S 11:47 0:00 php-fpm: pool www3
nobody 24178 0.0 0.6 409912 53432 ? S 11:47 0:00 php-fpm: pool www3
nobody 24179 0.1 1.3 435216 106892 ? S 11:47 0:02 php-fpm: pool www3
nobody 24180 0.0 0.7 413492 59956 ? S 11:47 0:00 php-fpm: pool www3
nobody 24181 0.0 0.4 402760 35852 ? S 11:47 0:00 php-fpm: pool www3
nobody 24182 0.0 0.4 401464 37040 ? S 11:47 0:00 php-fpm: pool www4
nobody 24183 0.0 0.5 404476 40268 ? S 11:47 0:00 php-fpm: pool www4
nobody 24184 0.0 0.9 409564 72888 ? S 11:47 0:01 php-fpm: pool www4
nobody 24185 0.0 0.5 404048 40504 ? S 11:47 0:00 php-fpm: pool www4
nobody 24186 0.0 0.5 403004 40296 ? S 11:47 0:00 php-fpm: pool www4

PHP рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рдмрджрд▓рддреА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рдкреАрдЫрд╛ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдЙрдиреНрд╣реЗрдВ рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдХрдо рдЬреАрд╡рдирдХрд╛рд▓ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
pm.max_children = 5
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 5

pm.max_requests = 100

рдФрд░ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЪрд▓рд╛рдПрдВ:

strace -p 24166 -f -s 128 -tt -o рдЯреНрд░реЗрд╕.рд▓реЙрдЧ

рдпрд╛рдиреА рд╣рдо рдЗрд╕реЗ рдореВрд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрд░ рд▓рдЯрдХрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЬрдм рдирдП рд╡рдВрд╢ рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЙрдиреНрд╣реЗрдВ рднреА рдЯреНрд░реЗрд╕ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрдЧрд╛ред рдмрд╕ред
рдЕрдм рдпрд╣ рд╕рд▓рд╛рд╣ рджреА рдЬрд╛рддреА рд╣реИ рдХрд┐ PHP рд▓реЙрдЧ рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА PID рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВ рддрд╛рдХрд┐ рдЖрдк рдЯреНрд░реЗрд╕ рдХреА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рд╛рде рд▓реЙрдЧ рд╕реЗ рд▓рдВрдмреЗ рд╣рд┐рдЯ рдХреА рддреБрд▓рдирд╛ рдЬрд▓реНрджреА рдХрд░ рд╕рдХреЗрдВ:
access.log = /opt/php/var/log/www.access.log
access.format = "%R # %{HTTP_HOST}e # %{HTTP_USER_AGENT}e # %t # %m # %r # %Q%q # %s # %f # %{mili}d # %{kilo}M # %{user}C+%{system}C # %p "

рдЕрдм рд╢рд┐рдХрд╛рд░ рдХреЗ рдкреНрд░рдХрдЯ рд╣реЛрдиреЗ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ рдмрд╛рдХреА рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рдВрдмреА рд╣рд┐рдЯ:
[24-May-2012 11:43:49] WARNING: [pool www1] child 22722, script '/var/www/html/myfile.php' (request: "POST /var/www/html/myfile.php") executing too slow (38.064443 sec), logging

- # mysite.ru # Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0 # 24/May/2012:11:43:11 +0400 # POST # /var/www/html/myfile.php # # 200 # /var/www/html/myfile.php # 61131.784 # 6656 # 0.03+0.03 # 22722


рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рдирд╛



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

рдмрд┐рд▓реНрд▓реА рдЯреНрд░реЗрд╕ .log | grep '22722' | рдХрдо

рд╣рд┐рдЯ рдХрд╛ рд╕рдордп рд▓реЙрдЧ рд╕реЗ рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд░рд╣рддрд╛ рд╣реИ рдХрд┐ рдкреГрд╖реНрда рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рджреМрд░рд╛рди рдХреНрдпрд╛ рд╣реБрдЖ рдФрд░ рдпрд╣ рдЗрддрдиреЗ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдХреНрдпреЛрдВ рд▓рдЯрдХрд╛ рд░рд╣рд╛ (рдЯреНрд░реЗрд╕ рдереЛрдбрд╝рд╛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛)ред
рджрд░реНрд╢рдиреАрдп рдбреЗрдЯрд╛рдмреЗрд╕ рдкреНрд░рд╢реНрди рдФрд░ рдЙрддреНрддрд░:
24167 12:47:50.252654 write(6, "u\0\0\0\3select name, name, password ...", 121) = 121
24167 12:47:50.252915 read(6, "pupkin, 123456"..., 16384) = 458

рдлрд╝рд╛рдЗрд▓ рдПрдХреНрд╕реЗрд╕:

24167 12:47:50.255299 open("/var/www/html/myfile.php", O_RDONLY) = 7


рдЬреНрдЮрд╛рдкрди рдХреЗ рд╕рд╛рде рд╕рд╣рднрд╛рдЧрд┐рддрд╛:

24167 12:47:50.262654 sendto(9, "add mykey 0 55 1\r\n1\r\n", 65, MSG_DONTWAIT, NULL, 0) = 65
24167 12:47:50.263151 recvfrom(9, "STORED\r\n", 8192, MSG_DONTWAIT, NULL, NULL) = 8
...
24167 12:47:50.282681 sendto(9, "delete mykey 0\r\n", 60, MSG_DONTWAIT, NULL, 0) = 60
24167 12:47:50.283998 recvfrom(9, "DELETED\r\n", 8192, MSG_DONTWAIT, NULL, NULL) = 9


рдФрд░ рдпрд╣рд╛рдБ рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рд┐рдЯ рдХреНрдпреЛрдВ рдЬрдореА рд╣реИ:
22722 11:43:11.487757 sendto(10, "delete mykey 0\r\n", 55, MSG_DONTWAIT, NULL, 0) = 55
22722 11:43:11.487899 poll([{fd=10, events=POLLIN|POLLERR|POLLHUP}], 1, 1000) = 1 ([{fd=10, revents=POLLIN}])
22722 11:43:11.488420 recvfrom(10, "DELETED\r\n", 8192, MSG_DONTWAIT, NULL, NULL) = 9
22722 11:43:11.488569 sendto(10, "delete mykey2 0\r\n", 60, MSG_DONTWAIT, NULL, 0) = 60
22722 11:43:11.488714 poll([{fd=10, events=POLLIN|POLLERR|POLLHUP}], 1, 1000) = 1 ([{fd=10, revents=POLLIN}])
22722 11:43:11.489215 recvfrom(10, "DELETED\r\n", 8192, MSG_DONTWAIT, NULL, NULL) = 9
22722 11:43:11.489351 close(10) = 0
22722 11:43:11.489552 gettimeofday({1337845391, 489591}, NULL) = 0
22722 11:43:11.489695 gettimeofday({1337845391, 489727}, NULL) = 0
22722 11:43:11.489855 nanosleep({0, 100000}, NULL) = 0
22722 11:43:11.490155 nanosleep({0, 200000}, NULL) = 0
22722 11:43:11.490540 nanosleep({0, 400000}, NULL) = 0
22722 11:43:11.491121 nanosleep({0, 800000}, NULL) = 0
22722 11:43:11.492103 nanosleep({0, 1600000}, NULL) = 0
22722 11:43:11.493887 nanosleep({0, 3200000}, NULL) = 0
22722 11:43:11.497269 nanosleep({0, 6400000}, NULL) = 0
22722 11:43:11.503852 nanosleep({0, 12800000}, NULL) = 0
22722 11:43:11.516836 nanosleep({0, 25600000}, NULL) = 0
22722 11:43:11.542620 nanosleep({0, 51200000}, NULL) = 0
22722 11:43:11.594019 nanosleep({0, 102400000}, NULL) = 0
22722 11:43:11.696619 nanosleep({0, 204800000}, NULL) = 0
22722 11:43:11.901622 nanosleep({0, 409600000}, NULL) = 0
22722 11:43:12.311430 nanosleep({0, 819200000}, <unfinished ...>
22722 11:43:13.130867 <... nanosleep resumed> NULL) = 0
22722 11:43:13.131025 nanosleep({1, 638400000}, <unfinished ...>
22722 11:43:14.769688 <... nanosleep resumed> NULL) = 0
22722 11:43:14.770104 nanosleep({1, 638400000}, <unfinished ...>
22722 11:43:16.408860 <... nanosleep resumed> NULL) = 0
22722 11:43:16.409048 nanosleep({1, 638400000}, <unfinished ...>
22722 11:43:18.047808 <... nanosleep resumed> NULL) = 0
22722 11:43:18.048103 nanosleep({1, 638400000}, <unfinished ...>
22722 11:43:19.686947 <... nanosleep resumed> NULL) = 0
22722 11:43:19.687085 nanosleep({1, 638400000}, <unfinished ...>
22724 11:43:20.227224 <... lstat resumed> 0x7fff00adb080) = -1 ENOENT (No such file or directory)
22722 11:43:21.325824 <... nanosleep resumed> NULL) = 0
22722 11:43:21.326219 nanosleep({1, 638400000}, <unfinished ...>
22722 11:43:22.964830 <... nanosleep resumed> NULL) = 0
22722 11:43:22.965126 nanosleep({1, 638400000}, <unfinished ...>
22722 11:43:24.603692 <... nanosleep resumed> NULL) = 0
22722 11:43:24.604117 nanosleep({1, 638400000}, <unfinished ...>
22722 11:43:26.250371 <... nanosleep resumed> NULL) = 0
22722 11:43:26.250580 nanosleep({1, 638400000}, <unfinished ...>
22722 11:43:27.889372 <... nanosleep resumed> NULL) = 0
22722 11:43:27.889614 nanosleep({1, 638400000}, <unfinished ...>
22722 11:43:29.534127 <... nanosleep resumed> NULL) = 0
22722 11:43:29.534313 nanosleep({1, 638400000}, <unfinished ...>
22722 11:43:31.173004 <... nanosleep resumed> NULL) = 0
22722 11:43:31.173273 nanosleep({1, 638400000}, <unfinished ...>
22722 11:43:32.812113 <... nanosleep resumed> NULL) = 0
22722 11:43:32.812531 nanosleep({1, 638400000}, <unfinished ...>
22722 11:43:34.451236 <... nanosleep resumed> NULL) = 0
22722 11:43:34.451554 nanosleep({1, 638400000}, <unfinished ...>
22722 11:43:36.090229 <... nanosleep resumed> NULL) = 0
22722 11:43:36.090317 nanosleep({1, 638400000}, <unfinished ...>
22724 11:43:36.522722 fstat(12, <unfinished ...>
22723 11:43:36.622833 <... gettimeofday resumed> {1337845416, 622722}, NULL) = 0
22722 11:43:37.729696 <... nanosleep resumed> NULL) = 0
22722 11:43:37.730033 nanosleep({1, 638400000}, <unfinished ...>
22724 11:43:39.322722 gettimeofday( <unfinished ...>
22722 11:43:39.368671 <... nanosleep resumed> NULL) = 0
22722 11:43:39.368930 nanosleep({1, 638400000}, <unfinished ...>
22722 11:43:41.007574 <... nanosleep resumed> NULL) = 0
22722 11:43:41.007998 nanosleep({1, 638400000}, <unfinished ...>
22722 11:43:42.646895 <... nanosleep resumed> NULL) = 0
22722 11:43:42.647140 nanosleep({1, 638400000}, <unfinished ...>
22720 11:43:43.022722 fstat(12, <unfinished ...>
22720 11:43:43.622722 munmap(0x7fa1e736a000, 646) = 0
22722 11:43:44.285702 <... nanosleep resumed> NULL) = 0
22722 11:43:44.285973 nanosleep({1, 638400000}, <unfinished ...>
22722 11:43:45.926593 <... nanosleep resumed> NULL) = 0
22722 11:43:45.926793 nanosleep({1, 638400000}, <unfinished ...>
22722 11:43:47.566124 <... nanosleep resumed> NULL) = 0
22722 11:43:47.566344 nanosleep({1, 638400000}, <unfinished ...>
22722 11:43:49.205103 <... nanosleep resumed> NULL) = 0
22722 11:43:49.205311 nanosleep({1, 638400000}, <unfinished ...>
22719 11:43:49.440580 ptrace(PTRACE_ATTACH, 22722, 0, 0 <unfinished ...>

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдереЗ: рд▓реЗрдЦрди / рдкрдврд╝рдирд╛ рд╕реЙрдХреЗрдЯ 10, рдлрд┐рд░ рд╕реЙрдХреЗрдЯ рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ ("рдмрдВрдж" = 0), рдлрд┐рд░ рдХреЛрдб рдХреЛ рд▓реВрдк рдореЗрдВ рд╕реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд▓реВрдк рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдкрд╣рд▓реЗ рдмрдВрдж рд╕реЙрдХреЗрдЯ рдХреЗ рдХрд╛рд░рдг рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреА рдереАред рдирддреАрдЬрддрди, рдХрд╛рд░рдг рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ - рдЬрд▓реНрджреА рдФрд░ рдХреЛрдб рдХреЛ рд╕рд╣реА рдХрд░реЗрдВред

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

рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдпреЗ рдореИрдиреБрдЕрд▓ рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдЗрд╕ рддрд░рд╣ рдбрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ (CentOS6 рдкрд░):
yum рдореИрди-рдкреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ

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

рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░


  1. рд╣рдордиреЗ рдЬрдЯрд┐рд▓рддрд╛ рдХреЗ рдХрд┐рд╕реА рднреА рдбрд┐рдЧреНрд░реА рдХреЗ PHP рдореЗрдВ рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рдбреАрдмрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреБрдирд┐рдпрд╛рджреА рддрд░реАрдХреЛрдВ рдФрд░ рдЙрдкрдХрд░рдгреЛрдВ рдХреЛ рджреЛрд╣рд░рд╛рдпрд╛ рд╣реИред
  2. рд╣рдордиреЗ рдореБрдХрд╛рдмрд▓рд╛ рд╕рд░реНрд╡рд░ рдкрд░ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рдФрд░ рдкреНрд░рднрд╛рд╡реА рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдЖрдпреЛрдЬрди рдХреЗ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ред
  3. рд╣рдордиреЗ рд╕реАрдЦрд╛ рдХрд┐ "рд▓рдбрд╝рд╛рдИ" рд╕рд░реНрд╡рд░ рдкрд░ xhprof рдФрд░ strace рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ "рдЬрдЯрд┐рд▓" рдорд╛рдорд▓реЛрдВ рдФрд░ рдмрд╛рдзрд╛рдУрдВ рдХреЛ рдХреИрд╕реЗ рдкрдХрдбрд╝рд╛ рдЬрд╛рдПред
  4. рдЪрдЦрдиреЗ рд╡рд╛рд▓реЗ рд▓рд┐рдирдХреНрд╕ рд╕рд┐рд╕реНрдЯрдо рдиреЗ рдХреЙрд▓ рдХрд┐рдпрд╛ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рд╕реАрдЦрд╛ред


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

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


All Articles