hellpers/locker

Предотвращает повторный запуск скрипта

1.0.2 2019-05-31 16:21 UTC

This package is auto-updated.

Last update: 2024-02-29 03:51:11 UTC


README

hellpers/locker - Предотвращает повторный запуск скрипта.

Установка:

composer require hellpers/locker

Пример:

use Hellpers\Locker;

/*
|------------------------------------------------------------------------------
| Установка локера
|------------------------------------------------------------------------------
|
| Блокировка на повторный запуск скрипта осуществляется в одну строчку. Метод 
| Locker::set() принимает 5 необязательных параметра:
|
| 1. (string) Абсолютный путь к папке для хранения lock-файла (по умолчанию
| будет выбрат каталог исполняемого файла);
| 2. (string) Имя для lock-файла (по умолчанию лок файл получит название
| исполняемого файла с расширением lock);
| 3. (bool) Что делать при повторном запуске скрипта: обрывать выполнение по
| exit() или бросать Exception() (по умолчанию - exit(), т.е. false);
| 4. (bool) Записывать id процесса в lock-файл (только для unix-подобных ОС) (по
| умолчанию - true);
| 5. (bool) Обрабатывать сигналы - да/нет, true/false (только для unix-подобных
| ОС). Необходимо для того, чтобы lock-файл удалялся, когда скрипт убивается
| извне. Будет правильно работать только если в начале кода указать
| declare(ticks = 1) (по умолчанию - false);
|
| Метод ничего не возвращает.
|
*/
declare(ticks = 1);

Locker::set(__DIR__, 'test.lock', false, true, true);



/* ========================================================================== */



/*
|------------------------------------------------------------------------------
| Killer для запущенного процесса (только для unix-подобных ОС)
|------------------------------------------------------------------------------
|
| Если локер был установлен с разрешением на запись идентификатора процесса в
| локирующий файл, тогда запущенный процесс можно убить методом Locker::kill(),
| передав в него абсолютный путь к lock-файлу.
|
| Возаращает true, если удалось убить процесс и false - если не удалось.
|
*/
Locker::kill(__DIR__ . DIRECTORY_SEPARATOR . 'test.lock');