Lae/app/Helpers/Lock.php

22 lines
475 B
PHP
Raw Normal View History

2022-08-12 07:56:56 +00:00
<?php
namespace App\Helpers;
use Closure;
use Illuminate\Contracts\Cache\LockTimeoutException;
use Illuminate\Support\Facades\Cache;
trait Lock {
public function await($name, Closure $callback) {
$lock = Cache::lock("lock_" . $name, 5);
try {
$lock->block(5);
return $callback();
} catch (LockTimeoutException $e) {
return false;
} finally {
optional($lock)->release();
}
}
}