Maison >développement back-end >tutoriel php >Gérer les demandes simultanées avec le blocage de la session Laravel
Le mécanisme de blocage de la session de Laravel garantit les conditions de course et les incohérences de données en régulant l'accès simultané aux sessions. Cela garantit l'intégrité des données pendant les opérations simultanées.
Session efficace Bloquer des charnières sur ces conditions préalables:
l'extrait de code suivant démontre son utilisation de base:
Route::post('/endpoint', function() { // Application logic here })->block($lockSeconds = 5, $waitSeconds = 10);
illustrons le blocage de la session dans un système de traitement des paiements conçu pour le contrôle de la concurrence:
<?php namespace App\Http\Controllers; use App\Models\Payment; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; use App\Exceptions\PaymentException; class PaymentController extends Controller { public function process(Request $request) { return DB::transaction(function() use ($request) { // Verify payment existence and unprocessed status $payment = Payment::findOrFail($request->payment_id); if ($payment->isProcessed()) { throw new PaymentException('Payment already processed.'); } // Initiate payment processing $result = $this->paymentGateway->charge([ 'amount' => $payment->amount, 'currency' => $payment->currency, 'token' => $request->payment_token ]); $payment->markAsProcessed($result->transaction_id); return response()->json([ 'status' => 'success', 'transaction_id' => $result->transaction_id ]); }); } } // routes/api.php Route::post('/payments/process', [PaymentController::class, 'process'])->block(5, 10);
Cette implémentation raffinée:
En conclusion, le blocage de la session de Laravel offre une approche robuste pour gérer les demandes simultanées, assurant l'intégrité des données dans des applications à haute trafic tout en maintenant une implémentation rationalisée et native de Laravel.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!