Пакет Laravel Console Mutex - предотвращает одновременное выполнение одной и той же команды. Это помогает избежать различного рода конфликтов в данных и лишнего расходования ресурсов сервера.
Установка пакета:
1 |
composer require illuminated/console-mutex |
Для использования необходимо указать trait WithoutOverlapping:
1 2 3 4 5 6 7 8 |
use Illuminated\Console\WithoutOverlapping; class ExampleCommand extends Command { use WithoutOverlapping; // ... } |
Для того, чтобы предотвратить выполнение более 1 экземпляра консольной задачи одновременно пакет предусматривает ряд стратегий предотващения:
file
(default)mysql
redis
memcached
Таким образом, можно выбрать БД или иное хранилище для данных о Mutex-е.
Функционал пакета таков, что есть возможность как просто блокировать выполнение команды, вызванное при запуске другой, так и подождать освобождения указаное время.
Можно для нескольких команд задать имя мютекса, чтобы для них можно было использовать общий Mutex.