Lae/app/Helpers/Lock.php

26 lines
470 B
PHP
Raw Normal View History

2022-08-12 07:56:56 +00:00
<?php
namespace App\Helpers;
use Closure;
use Illuminate\Support\Facades\Cache;
trait Lock
{
public function await($name, Closure $callback)
{
2022-08-13 08:37:17 +00:00
// if env is local
2023-01-10 13:42:27 +00:00
if (config('app.env') == 'local') {
2022-08-13 08:37:17 +00:00
return $callback();
}
2023-02-07 09:03:47 +00:00
$lock = Cache::lock('lock_' . $name, 5);
2022-08-12 07:56:56 +00:00
try {
$lock->block(5);
2023-01-30 16:14:07 +00:00
2022-08-12 07:56:56 +00:00
return $callback();
} finally {
optional($lock)->release();
}
}
}