Ограничение работы скрипта в один поток

Потребовалось мне сделать ограничение работы кол-ва копий скрипта в единицу времени. Для этого у меня, есть свой скрипт, который использует проверку существования файла, и его удаление при окончании работы скрипта, функцией, которую задаем через register_shutdown_function.
Но вот нашел ещё одно интересное решение, чем спешу поделиться со всеми. Оно использует возможность блокировки файла, до окончания работы с ним:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |     <?php         function RunLock($lockFile, $exitText='Script is already running. Exiting..')         {             $fp = fopen($lockFile, 'w');             if (flock($fp, LOCK_EX | LOCK_NB)) // если смогли заблокировать файл, возвращаем указатель                 return $fp;             else // если не смогли заблокировтаь файл (он уже заблокирован), выходим                 die($exitText);         }         // обязательно записываем возвращаемое значение в переменную иначе php освободит блокировку         $rl = RunLock('r.lock');         // делаем паузу в 60 секунд, чтобы убедится что скрипт работает         sleep(60); //     ?> | 
Author: | Rating: / | Tags:

Leave a Reply