Обробка синхронізації процесів за допомогою Laravel Cache Lock

Перекладено ШІ 1 Laravel News 26 червня, 2026

У статті розглядається функціональність системи блокування кешу в Laravel, яка допомагає уникати конфліктів при обробці одночасних операцій. Дізнайтеся, як налаштувати розподілені блоки для захисту ваших процесів від умов гонки та забезпечення цілісності даних у вашій аплікації

Коли створюються додатки для обробки одночасних операцій, важливо забезпечити, щоб певні процеси не заважали один одному. Система блокування кешу в Laravel є надійним рішенням для управління синхронізацією процесів, незалежно від того, чи обробляєте ви завантаження, вебхуки чи фонові завдання.

Система блокування кешу дозволяє створювати розподілені блоки, тобто вони можуть працювати на різних серверах, у різних процесах і з черговими робітниками, що робить їх ідеальними для запобігання гонитві станів у розподілених системах.

use Illuminate\Support\Facades\Cache;

$lock = Cache::lock('process-payment', 120);

if ($lock->get()) {
    // Безпечно обробити платіж
    // Блокування автоматично знімається через 120 секунд
}

Ось практичний приклад обробки вебхуків із використанням блокувань:

<?php

namespace App\Http\Controllers;

use Illuminate\Support\Facades\Cache;
use App\Jobs\ProcessWebhook;

class WebhookController extends Controller
{
    public function handle(Request $request)
    {
        $webhookId = $request->input('webhook_id');
        $lockName = "webhook-{$webhookId}";

        $lock = Cache::lock($lockName, 60);

        try {
            if (!$lock->get()) {
                Log::info("Webhook {$webhookId} вже обробляється");
                return response()->json([
                    'message' => 'Webhook обробляється'
                ], 409);
            }

            // Початкова валідація
            $this->validateWebhook($request);

            // Виклик обробної роботи з інформацією про блокування
            ProcessWebhook::dispatch(
                $request->all(),
                $lock->owner()
            )->onQueue('webhooks');

            return response()->json([
                'message' => 'Webhook прийнято для обробки',
                'processing_id' => $lock->owner()
            ]);

        } catch (Exception $e) {
            $lock?->release();
            throw $e;
        }
    }
}

class ProcessWebhook implements ShouldQueue
{
    public function __construct(
        private array $payload,
        private string $lockOwner
    ) {}

    public function handle()
    {
        $lock = Cache::restoreLock(
            "webhook-{$this->payload['webhook_id']}",
            $this->lockOwner
        );

        try {
            // Безпечно обробити вебхук, знаючи, що у нас є блокування
            $this->processWebhookPayload();

        } finally {
            // Завжди зняти блокування після завершення
            $lock->release();
        }
    }
}

Блокування кешу в Laravel забезпечують надійний спосіб обробки синхронізації процесів, гарантуючи, що ваша програма підтримує цілісність даних навіть під час роботи з одночасними операціями.

Популярні

Інше, що варто прочитати

12 Оновлено 26 червня, 2026

Генерація документації в Laravel за допомогою штучного інтелекту

Docudoodle — це потужний пакет для генерації документації в Laravel, який допомагає легко аналізувати вашу кодову базу та створювати документацію за допомогою обраного вами AI. Чи готові ви дізнатися, як цей інструмент може спростити вашу роботу з документуванням коду? Читайте далі!

19 Оновлено 26 червня, 2026

Використання штучного інтелекту для управління перекладами в Laravel

Досліджуйте нові можливості локалізації вашого Laravel-додатку з пакунками, які використовують штучний інтелект, такими як ChatGPT та Claude. Які рішення можуть спростити ваш процес перекладу та зробити його більш точним? Читайте далі, щоб дізнатися більше!

11 Оновлено 26 червня, 2026

Laravel: шлях до створення справді дієздатних AI-агентів

Чи готові ви підвищити ефективність своїх проектів на Laravel і спростити інтеграцію штучного інтелекту? У нашій статті ви дізнаєтеся, як Vizra ADK може революціонізувати ваш підхід до розробки, розширюючи можливості, забезпечуючи тестування та надійність для ваших AI-агентів