РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
871 of 1392 menu

Метод lock

Метод lock используется для создания блокировки на основе ключа кэша. Это позволяет организовать атомарную операцию, гарантируя, что критический участок кода будет выполнен только одним процессом в единицу времени. Первым параметром передаётся ключ блокировки, вторым - время жизни блокировки в секундах (по умолчанию 60 секунд).

Синтаксис

<?php Cache::lock($key, $ttl); ?>

Пример

Давайте создадим блокировку для ключа 'processing' и выполним некоторую работу в защищённом блоке:

<?php use Illuminate\Support\Facades\Cache; $lock = Cache::lock('processing', 30); if ($lock->get()) { try { // Critical section of code echo "Processing data..."; // Simulate long running task sleep(2); echo "Task completed successfully"; } finally { $lock->release(); } } else { echo "Unable to acquire lock"; } ?>

Результат выполнения кода:

"Processing data..." "Task completed successfully"

Пример

Используем блокировку с автоматическим освобождением с помощью метода block, который ожидает освобождения блокировки в течение указанного времени:

<?php use Illuminate\Support\Facades\Cache; $lock = Cache::lock('user-update', 10); $lock->block(5, function () { // This code will execute only after lock is acquired $res = ['status' => 'updated', 'user_id' => 1]; echo json_encode($res); }); ?>

Результат выполнения кода:

"{"status":"updated","user_id":1}"

Пример

Проверим, занята ли блокировка, и выполним разные действия в зависимости от её состояния:

<?php use Illuminate\Support\Facades\Cache; $lock = Cache::lock('report-generation', 60); if ($lock->get()) { // Generate report $res = ['report' => 'Generated at ' . date('Y-m-d H:i:s')]; echo "Report: " . $res['report']; $lock->release(); } else { echo "Another process is already generating report"; } ?>

Результат выполнения кода:

"Report: Generated at 2026-09-07 14:30:25"

Смотрите также

  • метод get,
    который получает значение из кэша по ключу
  • метод put,
    который сохраняет значение в кэше на указанное время
  • метод remember,
    который получает значение или сохраняет результат замыкания
  • метод forget,
    который удаляет значение из кэша по ключу
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить