PHP рдореЗрдВ рджреМрдбрд╝ рдХреА рд╕реНрдерд┐рддрд┐ рд╕реЗ рд▓рдбрд╝рдирд╛

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

function getFlagFromFile($filename) { if (file_exists($filename)) { if (!$this->validate()) { //     ? unlink($filename); return false; } else { return file_get_contents($filename); } } return false; } 

рдЕрдирд▓рд┐рдВрдХ () рд▓рд╛рдЗрди рдореЗрдВ рддреНрд░реБрдЯрд┐ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ: рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ!

рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рдФрд░ рд╕рдордЭ рд╕реЗ рдмрд╛рд╣рд░ рдХреА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рддреНрд░реБрдЯрд┐ рд╕рдордп рдкрд░ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдмрд┐рдВрджреБрдУрдВ рдкрд░ рд╣реЛрддреА рд╣реИ, рдФрд░ рдЬрдм рдЖрдк рдбрд┐рдмрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ - рддреЛ рдпрд╣ рдкреБрди: рдкреЗрд╢ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ!

рджреМрдбрд╝ рдХреА рд╕реНрдерд┐рддрд┐ рддреНрд░реБрдЯрд┐ рдЙрд╕ рд╕рд┐рд╕реНрдЯрдо рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣реЛрддреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕рдорд╛рди рдХреЛрдб рдХреЛ рдПрдХ рд╕рд╛рде рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдХрдИ рд╕рдорд╛рдирд╛рдВрддрд░ рдзрд╛рдЧреЗ)ред рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдпрджрд┐ рдХреЛрдб рдХреЛ рдХрдИ рдереНрд░реЗрдбреНрд╕ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ file_exist ($ filename) рдФрд░! $ This-> validate () рдЪреЗрдХ рдХреЛ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рджреЛрдиреЛрдВ рдереНрд░реЗрдбреНрд╕ рджреНрд╡рд╛рд░рд╛ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдкрд░рд┐рдгрд╛рдо рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдереНрд░реЗрдб рдкрд╣рд▓реЗ рдЕрдирд▓рд┐рдВрдХ ($ рдлрд╝рд╛рдЗрд▓ рдирд╛рдо) рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛ред рджреВрд╕рд░реЗ рдХреЗ рд▓рд┐рдП - рдФрд░ рдлрд┐рд░ рджреВрд╕рд░рд╛ рдзрд╛рдЧрд╛ рдПрдХ рддреНрд░реБрдЯрд┐ рдХрд╛ рдХрд╛рд░рдг рд╣реЛрдЧрд╛ред

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

рдЖрдк рдПрдкреАрд╕реА рдФрд░ рд╕реЗрдорд╛рдлреЛрд░реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рджреМрдбрд╝ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдмрд╛рдзрд╛ рдбрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ - рдФрд░ рд╡рд╣рд╛рдБ рдФрд░ рдЗрд╕реА рдкрд░рдорд╛рдгреБ рд╕рдВрдЪрд╛рд▓рди рдХрд░ рд░рд╣реЗ рд╣реИрдВред рд▓реЗрдХрд┐рди, рдЗрд╕реЗ рдХреНрд░рдо рдореЗрдВ рдХрд░рддреЗ рд╣реИрдВред

рдПрдкреАрд╕реА рд╕рдорд╛рдзрд╛рди


PHP рдореЗрдВ рд╡реИрдХрд▓реНрдкрд┐рдХ рдХреИрд╢ (рд╡реИрдХрд▓реНрдкрд┐рдХ PHP рдХреИрд╢ - APC) рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЗ рдмрд╛рдИрдЯреЗрдХреЛрдб рдХреЛ рдХреИрд╢ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рд▓рд╛рдЧрдд рдХреЛ рд░реЛрдХрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдпрджрд┐ рд╕рднреА рдирд╣реАрдВ, рддреЛ рд▓рдЧрднрдЧ рдпрд╣ рд╕рдм рдЬреНрдЮрд╛рдд рд╣реИред рд▓реЗрдХрд┐рди рд╣рд░ рдХреЛрдИ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рдХрд┐ рдПрдкреАрд╕реА рдХрд╛ рдЕрдкрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдореВрд▓реНрдп рднрдВрдбрд╛рд░рдг рд╣реИ, рдЬрд┐рд╕рдХреА рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдмреАрдЪ рдореВрд▓реНрдпреЛрдВ рдХрд╛ рд╕рдВрд░рдХреНрд╖рдг рд╣реИред рдПрдХ рдмрд╛рд░ рд╕реЗрдЯ рд╣реЛрдиреЗ рдкрд░, рдПрдкреАрд╕реА рдХреЛ рд╡реЗрдм рд╕рд░реНрд╡рд░ рдХреЗ рд░рд┐рдмреВрдЯ рд╣реЛрдиреЗ рддрдХ, рдпрд╛ рдЬрдм рддрдХ рдореВрд▓реНрдп рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдпрд╛ рдпрд╣ рд╕реЗрдЯ рд╣реЛрдиреЗ рдкрд░ рдореВрд▓реНрдп рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рдПрдЧрд╛) рддрдХ рдПрдкреАрд╕реА рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдЕрдирдиреНрдп рд▓реЙрдХрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП, apc_add рдлрд╝рдВрдХреНрд╢рди (рдХреБрдВрдЬреА, рдорд╛рди, рдЬреАрд╡рдирдХрд╛рд▓) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ - рдпрд╣ рдЧрд▓рдд рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧрд╛ рдпрджрд┐ рдореВрд▓реНрдп рдкрд╣рд▓реЗ рд╣реА рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рд╣реИ (рдПрдкреАрд╕реА_рд╕реНрдЯреЛрд░ () рдХреБрдВрдЬреА рдХреЛ рдореВрд▓реНрдп рдкреБрди: рдЕрд╕рд╛рдЗрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореМрдЬреВрдж рд╣реИ)ред рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреВрд░реА рд╕реНрдерд┐рддрд┐ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИ (getFlagFromFile () рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдЪрд┐рд╣реНрдирд┐рдд рд╣реИрдВ):

 function canUseApc() { return extension_loaded('apc') && ini_get('apc.enabled') && php_sapi_name() !== 'cli'; } function getFlagFromFile($filename) { if (file_exists($filename)) { if (!$this->validate()) { if ($this->canUseApc() && apc_add('some_key', 1)) { //*** unlink($filename); apc_delete('some_key'); //*** } return false; } else { return file_get_contents($filename); } } return false; } 


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

рдпрд╣ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕рдорд╛рдзрд╛рди рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╕рдорд╛рдзрд╛рди рдХрд╛ рдореБрдЦреНрдп рдиреБрдХрд╕рд╛рди рдпрд╣ рд╣реИ рдХрд┐ рдПрдкреАрд╕реА рд╕реАрдПрд▓рдЖрдИ рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЙрдирдХреЗ рд▓рд┐рдП, рд╕реЗрдорд╛рдлреЛрд░рд╕ рдкрд░ рдПрдХ рд╕рдорд╛рдзрд╛рди рдЙрдкрдпреБрдХреНрдд рд╣реИред

рд╕реЗрдорд╛рдлреЛрд░ рд╕рдорд╛рдзрд╛рди


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

рдПрдХ рдЕрд░реНрдз-рд╕рдВрд╕рд╛рдзрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, sem_get рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдкреВрд░реНрдгрд╛рдВрдХ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛, рдЕрд░реНрдз-рдорд╛рди = 1)ред рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдЖрдк рдПрдХрддрд╛ рд╕реЗ рдЕрд▓рдЧ рдореВрд▓реНрдп рдХреЗ рд╕рд╛рде рдПрдХ рдЕрд░реНрдзрд╡реГрддреНрдд рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдХрдИ рдереНрд░реЗрдбреНрд╕ рдХреЛ рдЕрд░реНрдзрдЪрдВрджреНрд░ рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рджрд░рдЕрд╕рд▓, рдХреИрдкреНрдЪрд░ рдХреЗ рд▓рд┐рдП sem_acquire function (рд╕реЗрдорд╛рдлреЛрд░ рд░рд┐рд╕реЛрд░реНрд╕) рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрдЧрд░ рдХреИрдкреНрдЪрд░ рд╕рдлрд▓ рд░рд╣рд╛, рддреЛ рд╕рд╣реА рд╣реИ рдФрд░ рдЕрдиреНрдпрдерд╛ рдЧрд▓рдд рд╣реИред

рд╕реЗрдореАрдлреЛрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рд╣рдорд╛рд░рд╛ рдЙрджрд╛рд╣рд░рдг рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:

 function getFlagFromFile($filename) { if (file_exists($filename)) { if (!$this->validate()) { $sem = sem_get(1); //*** if (sem_acquire($sem) && file_exists($filename)) { //*** unlink($filename); } sem_remove($sem); //*** return false; } else { return file_get_contents($filename); } } return false; } 


UPD: ManiaKryger рдиреЗ рдареАрдХ рд╕реЗ рдиреЛрдЯ рдХрд┐рдпрд╛ рдХрд┐ sem_remove ($ sem) рдмрд┐рдирд╛ рд╢рд░реНрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП

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

Sem_remove рдлрд╝рдВрдХреНрд╢рди (semaphore рд╕рдВрд╕рд╛рдзрди), рдЬреЛ рд╡реНрдпрд╕реНрдд semaphore рдХреЛ рд░рд┐рд▓реАрдЬрд╝ рдХрд░рддрд╛ рд╣реИ, рдпрд╣рд╛рдВ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рднреВрдорд┐рдХрд╛ рдирд┐рднрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдЕрд░реНрдзрд╡реГрддреНрдд рдЬрд╛рд░реА рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╕рдорд╛рдирд╛рдВрддрд░ рдзрд╛рдЧрд╛ рдЪрд╛рд▓реВ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рддрдм рддрдХ рд░рд╣реЗрдЧрд╛ рдЬрдм рддрдХ рдХрд┐ рдПрдХ рдЦрддреНрдо рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддрд╛ред

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

рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдХрд╣рдирд╛


рдорд╛рдирд╛ рддрд░реАрдХреЛрдВ рдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рдкрд╛рд╕ рдЕрдкрдиреЗ minuses рдФрд░ pluses рд╣реИрдВред рдкреНрд░рддреНрдпрдХреНрд╖ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдЫрд┐рдкрд╛рддреЗ рд╣реБрдП, рджреЛрдиреЛрдВ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЛ рдПрдХ рдХрдХреНрд╖рд╛ рдореЗрдВ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рдирд╛ рд╕рдмрд╕реЗ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред рдлрд┐рд░ рд╣рдореЗрдВ рджреМрдбрд╝ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рдФрд░ рд╕рд░рд▓ рдЙрдкрдХрд░рдг рдорд┐рд▓рддрд╛ рд╣реИ:

 function getFlagFromFile($filename) { if (file_exists($filename)) { if (!$this->validate()) { if ($race = RaceCondition::prevent('FLAG_'.$filename)) { //*** unlink($filename); $race->release(); //*** } return false; } else { return file_get_contents($filename); } } return false; } 


рдореИрдВ рдкреВрд░реНрдг рд╕рдорд╛рдзрд╛рди рдЕрдкрд▓реЛрдб рдирд╣реАрдВ рдХрд░рддрд╛, рдЗрд╕реЗ рдореЗрд░реЗ рд╣реЛрдорд╡рд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЫреЛрдбрд╝рдХрд░ =) рдПрдХ рд╕рд╛рдзрд╛рд░рдг Google рдЬрд▓реНрджреА рд╕реЗ рд╕реЗрдореАрдлреЛрд░, рдереНрд░реЗрдбреНрд╕ рдФрд░ рдПрдкреАрд╕реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддреГрдд рдЙрддреНрддрд░ рджреЗрдЧрд╛ред

рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ рдФрд░ рд╕рдВрдкрд╛рджрди рдкреАрдПрдо рдореЗрдВ рд╕реНрд╡рд╛рдЧрдд рд╣реИ!

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


All Articles