Sessions: FilesystemStore рдореЗрдВ рд░реЗрд╕ рдХреА рд╕реНрдерд┐рддрд┐

рдХреЛ рдирд┐рд░реНрдорд┐рдд 11 рдЬреВрди 2013  ┬╖  23рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: gorilla/sessions

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

  1. рдЕрдиреБрд░реЛрдз 1 рдПрдХ рд▓рдВрдмреЗ рд▓рдВрдмреЗ рдСрдкрд░реЗрд╢рди рдХреЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рддреНрд░ рдЦреЛрд▓рддрд╛ рд╣реИ
  2. рдЕрдиреБрд░реЛрдз 2 рд╕рддреНрд░ рдЦреЛрд▓рддрд╛ рд╣реИ
  3. рдЕрдиреБрд░реЛрдз 2 "рд▓реЙрдЧрдЖрдЙрдЯ" рдпрд╛ рд╕рдорд╛рди рдкреНрд░рджрд░реНрд╢рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рддреНрд░ рдбреЗрдЯрд╛ рдирд┐рдХрд╛рд▓рддрд╛ рд╣реИ
  4. рдЕрдиреБрд░реЛрдз 2 рдмрдЪрд╛рддрд╛ рд╣реИ
  5. рдЕрдиреБрд░реЛрдз 1 рд╕рд╣реЗрдЬрддрд╛ рд╣реИ, рдЬреЛ рдЗрд╕реЗ рдмрдирд╛рддрд╛ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ рд╕рддреНрд░ рд▓реЙрдЧ рдЖрдЙрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛

рдореИрдВрдиреЗ рдЗрд╕ рджреЛрд╖ рдХреЗ рд▓рд┐рдП рдХреНрд▓реЙрд╕ / рд╕реЗрд╢рди рдореЗрдВ рдПрдХ рдкрд░реАрдХреНрд╖рдг рдорд╛рдорд▓рд╛ рдЬреЛрдбрд╝рд╛ рд╣реИ

рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рд╕реАрдзрд╛ рддрд░реАрдХрд╛ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рд╕реНрддрд░ рдкрд░ рддрд╛рд▓реЗ рд▓рдЧрд╛рдХрд░ рд╣реЛрдЧрд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЧреЛрд▓рдВрдЧ рдХреЗ рдкрд╛рд╕ рдлрд╝рд╛рдЗрд▓ рд▓реЙрдХрд┐рдВрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдХреНрд░реЙрд╕ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдирд╣реАрдВ рд╣реИред рдпрд╣ flock syscall рдПрдХреНрд╕рдкреЛрдЬрд╝ рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдпрд╣ рдХреЗрд╡рд▓ рддрднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬрдм OS рдЗрд╕реЗ рд╕рдкреЛрд░реНрдЯ рдХрд░рддрд╛ рд╣реИред рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдЭреБрдВрдб рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдпреВрдирд┐рдХреНрд╕ рдкрд░ рднреА рдЕрд▓рдЧ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдорд╛рдорд▓рд╛ рд╣реИред рдЭреБрдВрдб рдХреЗ рд╕рд╛рде рдПрдХ рдФрд░ рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдПрдирдПрдлрдПрд╕ рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

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

рдЕрдВрдд рдореЗрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рд╕реНрдЯреЛрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рддрд╛рд▓реЛрдВ рдХрд╛ рдПрдХ рдирдХреНрд╢рд╛ рд░рдЦрдирд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЙрд╕ рдкрд░рд┐рджреГрд╢реНрдп рдореЗрдВ рд╕рднреА рдиреБрдХрд╕рд╛рдиреЛрдВ рдХреЛ рдареАрдХ рд╕реЗ рдкреНрд░рд▓реЗрдЦрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЖрдк рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдореЗрдВ рдПрдХ рд╣реА рд╣реЛрдиреЗ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдкрд░ рдЬрд╡рд╛рдм рджреЗ рд╕рдХрддреЗ рд╣реИрдВред

рдЕрдиреНрдп рд╕реНрдЯреЛрд░реЗрдЬ рдмреИрдХрдПрдВрдбреНрд╕ рдЬреЛ рдлрд╛рдЗрд▓рд╕рд┐рд╕реНрдЯрдорд╕реНрдЯреЛрд░ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИрдВ, рд╡реЗ рдЗрд╕ рджреЛрд╖ рдХреА рдирдХрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдореИрдВрдиреЗ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдзреНрдпрд╛рди рджрд┐рдпрд╛, рдЬрдм рдореЗрд░рд╛ boj / redistore # 2 рдХреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП Redistore рдХреЛрдб рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХреА)

рд╕рднреА 23 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рддрд╛рд▓рд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рд▓реЗрдирджреЗрди рдЖрдзрд╛рд░рд┐рдд рдкреНрд░рдгрд╛рд▓реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛? рд╕рддреНрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдПрдХ lastModified рдлрд╝реАрд▓реНрдб рд▓реЗ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЬрдм рдЖрдк рд╕рддреНрд░ рдХреЛ рд╡рд╛рдкрд╕ рд╕рддреНрд░ рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рд╕рд╣реЗрдЬрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдПрдХ рддреНрд░реБрдЯрд┐ рд▓реМрдЯрд╛рдПрдЧрд╛ рдпрд╣ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдЕрдВрддрд┐рдо рдмрд╛рд░ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдлрд┐рд░ рд╕реЗрд╢рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдХреЗ рдкреБрди: рдкреНрд░рдпрд╛рд╕ рдХрд░рдирд╛ рдЪреБрди рд╕рдХрддрд╛ рд╣реИред

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

рдЙрд╕ рдиреЗ рдХрд╣рд╛, рднрд▓реЗ рд╣реА FilesystemStore рд▓реЗрдирджреЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реЛ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдкреАрдЖрдИ рдХреЛ рд╕реНрдЯреЛрд░реЗрдЬ рдмреИрдХреЗрдВрдб рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд░рд╣рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ _do_ рд▓реЙрдХрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реЛрдЧрд╛ рдХрд┐ session.Save() рдПрдХ рдмрд╛рд░ рд╕реЗ рдЕрдзрд┐рдХ session.Release() рд╢реБрд░реВ рдХрд░рдиреЗ рдХрд╛ рдорддрд▓рдм рд╣реИ

рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рдмрд╛рдж рд╕реЗ рдпрд╣ RediStore рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИред рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж @cless

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

рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЕрдиреНрдп рд╕рддреНрд░ рдврд╛рдВрдЪреЗ рдХреЗ рдХреЛрдИ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ рдЬреЛ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рддреЗ рд╣реИрдВ? рдореИрдВ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрддреНрд╕реБрдХ рд╣реВрдВ рдХрд┐ рд╡реЗ рдХреНрдпрд╛ рдХрд░рддреЗ рд╣реИрдВред

рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ php рд╕реЗрд╢рди рд╣реИрдВрдбрд▓рд░ рдлрд╛рдЗрд▓рд╕рд┐рд╕реНрдЯрдо рдЖрдзрд╛рд░рд┐рдд рд▓реЙрдХрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ (php 5.4 рдЯрд╛рд░рдмреЙрд▓ рдореЗрдВ рдореИрдВрдиреЗ рдЕрднреА рдЪреЗрдХ рдХрд┐рдпрд╛ рд╣реИ рдпрд╣ ext/session/mod_files.c ред рдпрд╣ рдЭреБрдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдЬреЛ ext/standard/flock_compat.c рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)ред

рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЕрдЧрд░ php рдПрдХ рдЕрдЪреНрдЫрд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдЬреЛ рдЗрд╕реЗ рдкреНрд░рддрд┐рд╖реНрдард╛ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдбрд░ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХрдорд╛рддреНрд░ рдРрд╕рд╛ рдХреНрд╖рдг рд╣реИ рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореБрдЭреЗ рдкрддрд╛ рд╣реИред рдореИрдВ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЪрд╛рд░реЛрдВ рдУрд░ рдПрдХ рдирдЬрд╝рд░ рд░рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдБрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рдореБрдЭреЗ рдХреБрдЫ рдЕрдиреНрдп рд░реВрдкрд░реЗрдЦрд╛рдПрдБ рдорд┐рд▓ рд╕рдХрддреА рд╣реИрдВ рдФрд░ рд╡реЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдХреИрд╕реЗ рд╣рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

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

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

Django рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рд╕рддреНрд░ рдбреЗрдЯрд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЙрд╕ рдХреЛрдб рдХреЛ рдереЛрдбрд╝рд╛ рджреЗрдЦреВрдВрдЧрд╛ред

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

        # Write the session file without interfering with other threads
        # or processes.  By writing to an atomically generated temporary
        # file and then using the atomic os.rename() to make the complete
        # file visible, we avoid having to lock the session file, while
        # still maintaining its integrity.
        #
        # Note: Locking the session file was explored, but rejected in part
        # because in order to be atomic and cross-platform, it required a
        # long-lived lock file for each session, doubling the number of
        # files in the session storage directory at any given time.  This
        # rename solution is cleaner and avoids any additional overhead
        # when reading the session data, which is the more common case
        # unless SESSION_SAVE_EVERY_REQUEST = True.
        #
        # See ticket #8616.

рдЗрд╕рд╕реЗ рдпрд╣ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╕рддреНрд░ рдХреА рдлрд╝рд╛рдЗрд▓ рд╕рд╛рдордЧреНрд░реА рдХрднреА рдордВрдЧрд╛рдИ рдирд╣реАрдВ рдЧрдИ рд╣реИ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреЛрдИ рджреМрдбрд╝ рдХреА рд╕реНрдерд┐рддрд┐ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИред рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЛ рднреА Django рдХрд╛ рдЕрдиреБрднрд╡ рд╣реИ, рддреЛ рдХреНрд▓реИрд╕ / рд╕реЗрд╢рди @ f84abed рдЬреИрд╕рд╛ рдЯреЗрд╕реНрдЯ рдХреЗрд╕ рджреЗрдЦрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛
Stackoverflow рднреА рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ Django рд╕рддреНрд░реЛрдВ рдореЗрдВ рджреМрдбрд╝ рдХреА рд╕реНрдерд┐рддрд┐ рд╣реЛ рд╕рдХрддреА рд╣реИ: http://stackoverflow.com/search?q=django+session+race+condition

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

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдПрдХ рдореБрджреНрджрд╛ рд╣реИ рдЬреЛ рдХрд┐рд╕реА рднреА рд╡реЗрдм рд╕рдВрд╕рд╛рдзрди рдореЗрдВ рдореМрдЬреВрдж рд╣реИ, рд╡рд╣реА рдмрд╛рдд рд╣реЛрдЧреА рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╕реВрдЪрдирд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ PUT рджреНрд╡рд╛рд░рд╛ рдкреАрдЫрд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕ рдмреАрдЪ рдЪреАрдЬреЗрдВ рдмрджрд▓ рд╕рдХрддреА рд╣реИрдВред

рд╡реИрд╕реЗ рднреА, рдЗрд╕ рд╕рдордп рдореЗрд░реЗ рд╡рд┐рдЪрд╛рд░ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЖрдЧреЗ рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛ рд░рд╣реА рд╣реИред

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд▓рдВрдмреЗ рд╕рдордп рдореЗрдВ рдпрд╣ рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдбреЛрдореЗрди рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдЕрдзрд┐рдХ рд╣реИред

рдкрд░рд┐рджреГрд╢реНрдп рдХреНрд▓реИрд╕ рдХреЛ рдкреЛрд╕реНрдЯ рдХрд┐рдП рдЬрд╛рдиреЗ рдкрд░, рдпрджрд┐ рдЕрдиреБрд░реЛрдз 1 рд╕реЗ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЪрд▓рдиреЗ рдХреА рдЙрдореНрдореАрдж рд╣реИ, рддреЛ рдЕрдиреБрд░реЛрдз 2 рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ (рдЬреИрд╕реЗ рдХрд┐, Angular.js, рдпрд╛ рдПрдХ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдиреЛрдб.рдЬреЗрдПрд╕ рдРрдк рдЬреЛ рдХреБрдЫ рдПрдкреАрдЖрдИ рдорд╛рд░ рд░рд╣рд╛ рд╣реИ) рдореЗрдВ рд▓рд┐рдЦрд╛ рдПрдХ рдПрдХрд▓ рдкреГрд╖реНрда рдЕрдиреБрдкреНрд░рдпреЛрдЧ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИред рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдЪрд▓ рд░рд╣реЗ рдЕрдиреБрд░реЛрдз рдХреЛ рд╕рддреНрд░ рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЙрд╕ рдмрд┐рдВрджреБ рдкрд░ рдПрдХ рд╕реНрд╡рддрдВрддреНрд░ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЗрд╕рдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдкрд╛рдареНрдпрдХреНрд░рдо рдХреЗ рдореБрджреНрджреЗ рдХреЛ рд╕реАрдзреЗ рд╕рдВрдмреЛрдзрд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдХрд┐ рдХрд┐рд╕рд▓рд┐рдХ рдиреЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рдХрд┐рд╕реА рднреА рддрд░рд╣ рдХрд╛ рддрд╛рд▓рд╛ рд▓рдЧрд╛рдиреЗ рд╕реЗ рд╕реАрдорд╛рдВрдд рдорд╛рдорд▓рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред

рд╕рддреНрд░ рджреМрдбрд╝ рдХреА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рдкреНрд░рднрд╛рд╡ рдХреЗ рдХреБрдЫ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡рд┐рд╢реНрд╡ рдЙрджрд╛рд╣рд░рдг рдпрд╣рд╛рдВ рджрд┐рдП рдЧрдП рд╣реИрдВред рдмрдЧ рдХреЛ рдбрд┐рдмрдЧ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд░реВрдк рд╕реЗ рджрд┐рдЦрддреЗ рд╣реИрдВ рдФрд░ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЧреБрд╕реНрд╕рд╛ рд╣реИред рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рдмрдбрд╝реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП рдЬреЛ рдХрд┐ рдЕрдЬрд╛рдХреНрд╕ рдХрд╛ рд╡реНрдпрд╛рдкрдХ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдпреЗ рджреМрдбрд╝ рдХреА рд╕реНрдерд┐рддрд┐ рдЬрд▓реНрдж рдпрд╛ рдмрд╛рдж рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдЧреАред
http://www.hiretheworld.com/blog/tech-blog/codeigniter-session-race-conditions
http://www.chipmunkninja.com/Troubles-with-Asynchronous-Ajax-Requests-g@

рдореИрдВрдиреЗ рдПрд▓рд┐рд╕рд▓реИрдм / рдХреЛрдбрдЗрдЧреНрдирд┐рдЯрд░ # 1746 рдореЗрдВ рдкреВрд░реЗ рд╕реВрддреНрд░ рдХреЛ рдкрдврд╝рд╛ рд╣реИ рдЬреЛ рдПрдХ рд╕рдорд╛рди рдореБрджреНрджреЗ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди рдЙрдирдХрд╛ рдореБрджреНрджрд╛ рдЗрд╕ рддрдереНрдп рд╕реЗ рдЬрдЯрд┐рд▓ рд╣реИ рдХрд┐ рдХреЛрдбрдЖрдИрдЧреНрдирд┐рдЯрд░ рд╣рд░ рдмрд╛рд░ рдПрдХ рдмрд╛рд░ рд╕рддреНрд░ рдЖрдИрдбреА рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЪрд░реНрдЪрд╛ рдЗрд╕ рддрдереНрдп рдХреЗ рдЗрд░реНрджрдЧрд┐рд░реНрдж рдШреВрдорддреА рд╣реИред ред

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

type Store interface {
    Get(r *http.Request, name string) (*Session, error)
    New(r *http.Request, name string) (*Session, error)
    Save(r *http.Request, w http.ResponseWriter, s *Session) error
    Lock(r *http.Request, name string) error
    Release(r *http.Request, name string) error
}

рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реЛрдЧрд╛ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рд╕рддреНрд░ рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦрдиреЗ рд╡рд╛рд▓реЗ рд╣рд░ рдЕрдиреБрд░реЛрдз рдореЗрдВ рд▓реЙрдХрд┐рдВрдЧ рдХреЛ рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░реВрдВрдЧрд╛) рдФрд░ рдореМрдЬреВрджрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдкрд░ рдХреЛрдИ рдкреНрд░рднрд╛рд╡ рдирд╣реАрдВ рдкрдбрд╝реЗрдЧрд╛ред

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

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

рдЖрдкрдХреЛ рдпрд╣ рднреА рдзреНрдпрд╛рди рд░рдЦрдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЙрдЪреНрдЪ рд▓реЛрдб рдХреЗ рддрд╣рдд рднреА рдХрдо рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдиреЗ рдореЗрдВ рдХреБрдЫ рд╕рдордп рд▓рдЧ рд╕рдХрддрд╛ рд╣реИред

@ рдмрд┐рдирд╛ рдЕрдЪреНрдЫреЗ рдЕрдВрдХред

рдореБрдЭреЗ рдЖрдкрдХреЗ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдкрд╕рдВрдж рд╣реИрдВред

RediStore рдХреЗ рд▓рд┐рдП рдЖрдкрдХрд╛ рддрд╛рд▓рд╛ рд╕рдорд╛рдкреНрдд рд╣реЛрдирд╛ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдЖрд╕рд╛рди рд╣реЛрдЧрд╛, Redis рдореЗрдВ рдПрдХ EXPIRE рдХрдорд╛рдВрдб рд╣реИ рдЬреЛ TTL рдХреЛ рдПрдХ рдХреБрдВрдЬреА рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рдХреНрдпрд╛ рдЗрд╕ рддрд░рд╣ рдХреЗ рдорд╣реАрди рджрд╛рдиреЗ рд╡рд╛рд▓реЗ рд▓реЙрдХрд┐рдВрдЧ рдЕрднреА рднреА рдХрдИ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рддреНрд░ рднрдВрдбрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рдЕрдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрдВрдЧреЗ? рдФрд░ рд╕рдорд╛рдкреНрддрд┐ рдПрдХ рдореБрджреНрджрд╛ рднреА рд╣реИред

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпрджрд┐ рд╕рддреНрд░ рдЕрдзрд┐рдХ рд╕рдордп рддрдХ рд░рд╣рддрд╛ рд╣реИ, рддрдм рднреА рд╕рд╣реЗрдЬреЗрдВ рд╕рдлрд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпрд╛ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреА рджрд┐рд╢рд╛ рдореЗрдВ рдпрд╣ рдПрдХ рд▓рдВрдмрд╛ рд░рд╛рд╕реНрддрд╛ рддрдп рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рдЕрдЧрд░ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реЛрддрд╛?

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

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

@boj , рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рдпрд╣ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рддрд░рд╣ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рд▓реЙрдХ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЕрднреА рддрдХ рд╕рдорд╛рдкреНрдд рдирд╣реАрдВ рд╣реБрдЖ рд╣реИред рдПрдХ рддрд╛рд▓рд╛ рдкрд░ рд╕рдорд╛рдкреНрддрд┐ рдХрд╛ рд╕рдордп рдХреНрдпрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП?

рдпрд╣ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдиреЗ рдХрд╛ рдПрдХ рд╕рдВрднрд╡ рддрд░реАрдХрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рдкрд╕рдВрдж рд╣реИред рдЖрдк рдШрдбрд╝реА рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЖрдЧреЗ рдпрд╛ рдкреАрдЫреЗ рдХреА рдУрд░ рдЕрдЪрд╛рдирдХ рдирд╣реАрдВ рдХреВрдж рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдпрд╣ рдПрдХ рд╕реБрд░рдХреНрд╖рд┐рдд рдзрд╛рд░рдгрд╛ рдирд╣реАрдВ рд╣реИ:

func Lock(expiration time.Duration) time.Time {
    // Block here until the lock becomes your. Set the lock to expire after
    // dur+50ms. This extra 50 ms ensures that you never assume you own an
    // expired lock
    return time.Now().Add(expiration)
}

func main() {
    end := Lock(1000 * time.Millisecond)

    // Do your thing here ...
    // time.Sleep(1100 * time.Millisecond)

    if time.Now().After(end) {
        fmt.Println("Lock expired, throw an error")
    } else {
        fmt.Println("Good to go, save the session")
    }
}

@ рдЬрдм рддрдХ рдЖрдкрдХреА рдкреВрд░реА рдЯрд┐рдкреНрдкрдгреА рдЗрд╕ рддрд░рд╣ рдХреА рд╣реЛ рдЬрд╛рддреА рд╣реИ, рдЬреЛ @kisielk рдХреА рдЪрд┐рдВрддрд╛ рд▓рдЧрддреА рд╣реИред рдПрдХреНрд╕ рдРрд╕рд╛ рдХрд░рддрд╛ рд╣реИ, рд╡рд╛рдИ рдХрд░рддрд╛ рд╣реИ рдХрд┐, рдЬреЗрдб рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдХреБрдЫ рдЪрд░рдо рд╢рд╛рдорд┐рд▓ рди рд╣реЛрдВред рдЬрдмрдХрд┐ рджреМрдбрд╝ рдХреА рд╕реНрдерд┐рддрд┐ рд╡рд╛рдВрдЫрдиреАрдп рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рджреБрд░реНрд▓рдн рдорд╛рдорд▓реЗ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдХрдо рд╕реЗ рдХрдо рд╡рд░реНрддрдорд╛рди рдЧреЛрд░рд┐рд▓реНрд▓рд╛ / рд╕рддреНрд░ рдбрд┐рдЬрд╛рдЗрди рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ рдФрд░ рдХрдо рд╕реЗ рдХрдо рдЖрд╢реНрдЪрд░реНрдп рджрд░реНрд╢рди рдХреЗ рддрддреНрд╡ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рддрд╛ рд╣реИред

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

рдпрд╣рд╛рдВ рдкреНрд░рддрд┐-рд╕рддреНрд░ рд▓реЙрдХрд┐рдВрдЧ рдХреА рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдЕрдЪреНрдЫрд╛ рд▓реЗрдЦ рд╣реИ:

http://thwartedefforts.org/2006/11/11/race-conditions-with-ajax-and-php-sive/

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

рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрд▓реЙрдХ / рд░рд┐рд▓реАрдЬ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рд╕рд╡рд╛рд▓ рд╣реИ, рд╣рдо рдПрдХ рдЕрд▓рдЧ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг рдкреНрд░рддрд┐-рд╕рддреНрд░ рд▓реЙрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд╡реИрдХрд▓реНрдкрд┐рдХ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдмреИрдХрдПрдВрдб рдХреЛ рддрдм рдЙрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдЦрд┐рд▓рд╛рдл рдмрддрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЕрдЧрд░ рдпрд╣ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рддреЛ рд╣рдо рдЗрди-рдореЗрдореЛрд░реА рд▓реЙрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдкрд╛рдареНрдпрдХреНрд░рдо рдХрд╛ рдПрдХ рдФрд░ рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд▓реЙрдХ рдФрд░ рд░рд┐рд▓реАрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдХреЛрдб рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рдмрд┐рдирд╛ рдЙрдирдХреЗ рдкрд╛рд╕ рд╡реИрд╕рд╛ рд╣реА рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реЛрдЧрд╛ рдЬреИрд╕рд╛ рд╡реЗ рдЕрдм рдХрд░рддреЗ рд╣реИрдВред

"рд╣рдо рдЗрди-рдореЗрдореЛрд░реА рд▓реЙрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ"

рдпрд╣ рдмрд╣реБ-рд╕рд░реНрд╡рд░ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдЕрд░реНрдерд╣реАрди рд╣реЛрдЧрд╛ рдЬрд╣рд╛рдВ рдЕрдиреБрд░реЛрдз рд╕рдВрддреБрд▓рд┐рдд рд╣реЛрддреЗ рд╣реИрдВред

рдореБрдЭреЗ рд▓реЙрдХрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдкрд╕рдВрдж рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЖрдкрдХреЛ рд╕рддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдореМрдЬреВрджрд╛ рдХреЛрдб рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рдмрд┐рдирд╛ рдЗрд╕реЗ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЕрдзрд┐рдХ рд╕реНрд╡рддрдВрддреНрд░рддрд╛ рджреЗрддрд╛ рд╣реИред

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

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

@boj : рд╕рд╣рдордд рд╣реИрдВ, рд▓реЗрдХрд┐рди @cless рдХреЗ рд░реВрдк рдореЗрдВ

рдореИрдВ @cless рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕рд╣рдордд рд╣реВрдВ рдФрд░ рд╕рддреНрд░ рд▓реЙрдХрд┐рдВрдЧ рдФрд░ рдкрд░рд┐рдкрдХреНрд╡ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреЗ рдорд╣рддреНрд╡ рдкрд░ рдЬреЛрд░ рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ (рдЬреИрд╕реЗ PHP) рдЗрд╕реЗ рдЕрдкрдиреЗ рд╕рддреНрд░ рднрдВрдбрд╛рд░ рдкрд░ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред рдлрд╝рд╛рдЗрд▓реЛрдВ рдкрд░ рдпрд╣ 'рдлреНрд▓реЙрдХ' syscall рдФрд░ рдореЗрдХрдЪреЗ рдореЗрдВ 'рдРрдб' рдСрдкрд░реЗрд╢рди рдХреЗ рд░рд┐рдЯрд░реНрди рдореВрд▓реНрдп рдФрд░ '.lock' рдкреНрд░рддреНрдпрдп рдХреЗ рд╕рд╛рде рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдХреБрдВрдЬреА рдФрд░ рдПрдХ рдПрдХреНрд╕рдкрд╛рдпрд░ рд╕реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗред рдореИрдВ рдПрдХ рдирдП рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд▓рд┐рдП @kisielk рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рднреА рд╕рд╣рдордд рд╣реВрдВ (рдлрд╝рдВрдХреНрд╢рди 'рд▓реЙрдХ' рдФрд░ 'рд░рд┐рд▓реАрдЬрд╝' рд╣реЛрдиреЗ рдХрд╛ рдЕрд░реНрде рд╣реИ) рдХреНрдпрд╛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдпрд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ? рдЙрдЪреНрдЪ рдкреНрд░рджрд░реНрд╢рди рдФрд░ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдпрддрд╛ рдХреЗ рд▓рд┐рдП рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рднрд╛рд╖рд╛ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди (рдлрд╛рдЗрд▓рд╕рд┐рд╕реНрдЯрдо, рд░реЗрдбрд┐рд╕ рдФрд░ рдореЗрдореНрдЪреЗ) рдХрд╛ рдпреЛрдЧрджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╣рдореЗрдВ рдХреБрдЫ рдирдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

  • spinLockWait: рд▓реЙрдХ рд╣рд╛рд╕рд┐рд▓ рдХрд░рдиреЗ рдХреЗ рдкреНрд░рдпрд╛рд╕реЛрдВ рдХреЗ рдмреАрдЪ рд╕реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдорд┐рд▓реАрд╕реЗрдХрдВрдб (рдбрд┐рдлрд╝реЙрд▓реНрдЯ: 150)
  • LockMaxWait: рд╕реЗрдХрдВрдбреНрд╕ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓реЙрдХ (рдбрд┐рдлрд╝реЙрд▓реНрдЯ: 30)
  • LockMaxAge: рд╕реЗрдХрдВрдб рд▓реЙрдХ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд░рд┐рд▓реАрдЬрд╝ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд░рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдбрд┐рдлрд╝реЙрд▓реНрдЯ: lockMaxWait)

рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдмрд╛рд╕реА рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рджреЗрдЦрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рдХреБрдЫ рджрд┐рдиреЛрдВ рдореЗрдВ рдЕрдкрдиреЗ рдЖрдк рдмрдВрдж рд╣реЛ рдЬрд╛рдПрдЧрд╛ред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

marksalpeter picture marksalpeter  ┬╖  17рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

gtaylor picture gtaylor  ┬╖  7рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

CasperHK picture CasperHK  ┬╖  11рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

danvonk picture danvonk  ┬╖  9рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

elithrar picture elithrar  ┬╖  25рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ