desmart/laravel-padlock
Composer 安装命令:
composer require desmart/laravel-padlock
包简介
Script locking mechanism for Laravel. Enables blocking scripts execution for given period, for example to avoid cron jobs overlapping
README 文档
README
This package allows for easily temporarily locking your scripts execution.
It might come in handy in cases such as CRON jobs that connect with unreliable APIS, where you're not 100% sure if your script won't fail at some point.
Requirements
This package requires:
- PHP >= 7.0.0
- Laravel 5.3 || 5.4
Installation
$ composer require desmart/laravel-padlock- Add
DeSmart\Padlock\ServiceProviderto yourconfig/app.php:
/*
* Package Service Providers...
*/
DeSmart\Padlock\ServiceProvider::class,
$ php artisan vendor:publish --provider="DeSmart\Padlock\ServiceProvider"- Configure in
config/padlock.php- choose between Database and Filesystem driver
Example usage
This package's purpose is to protect your script from being run on multiple threads.
It is useful for long-time backend jobs such as handling queries, or harvesting data from external APIs.
class FooCommand extends \Illuminate\Console\Command
{
protected $signature = 'foo:bar';
protected $description = 'Foo command utilizing Padlock';
/** @var PadlockHandler */
private $padlockHandler;
const PADLOCK_SCRIPT = 'FooCommand';
/** 30 seconds padlock time to live - after that your padlock will be unlocked */
const PADLOCK_TTL = 30;
/**
* FooCommand constructor.
* @param \DeSmart\Padlock\PadlockHandler $padlockHandler
*/
public function __construct(\DeSmart\Padlock\PadlockHandler $padlockHandler)
{
parent::__construct();
$this->padlockHandler = $padlockHandler;
}
public function handle()
{
if (true === $this->padlockHandler->isLocked(self::PADLOCK_SCRIPT, self::PADLOCK_TTL)) {
echo "Padlock exists, script locked." . PHP_EOL;
return;
}
$this->padlockHandler->lock(self::PADLOCK_SCRIPT);
// do your stuff
$this->padlockHandler->unlock(self::PADLOCK_SCRIPT);
}
}
统计信息
- 总下载量: 814
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 3
- 点击次数: 0
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2017-02-17