РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
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 для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить