Heim > Backend-Entwicklung > PHP-Tutorial > Verwalten von Datenrennen mit pessimistischem Sperren in Laravel

Verwalten von Datenrennen mit pessimistischem Sperren in Laravel

百草
Freigeben: 2025-03-05 15:32:18
Original
917 Leute haben es durchsucht

Managing Data Races with Pessimistic Locking in Laravel

Laravel Framework bietet einen leistungsstarken pessimistischen Sperrmechanismus, um den Datenkonkurrenten in gleichzeitigen Datenbankoperationen effektiv zu verhindern. Mit den Methoden sharedLock() und lockForUpdate() können Sie die Datenkonsistenz in hohen Parallelitätsszenarien aufrechterhalten.

sharedLock() Ermöglicht das Lesen, verhindert jedoch eine Änderung:

DB::table('users')
    ->where('votes', '>', 100)
    ->sharedLock()
    ->get();
Nach dem Login kopieren

Für strengere Kontrolle verhindert die lockForUpdate() -Methode die Änderung und das Teilen von Sperren gleichzeitig:

DB::table('orders')
    ->where('status', 'pending')
    ->lockForUpdate()
    ->get();
Nach dem Login kopieren

Diese Methode ist besonders wichtig für Finanztransaktionen oder Bestandsverwaltungssysteme:

class PaymentController extends Controller
{
    public function processPayment($orderId, $amount)
    {
        return DB::transaction(function () use ($orderId, $amount) {
            $account = DB::table('accounts')
                ->where('order_id', $orderId)
                ->lockForUpdate()
                ->first();
            if ($account->balance >= $amount) {
                DB::table('accounts')
                    ->where('order_id', $orderId)
                    ->update(['balance' => $account->balance - $amount]);
                return ['success' => true, 'message' => 'Payment processed successfully'];
            }
            return ['success' => false, 'message' => 'Insufficient funds'];
        });
    }
}
Nach dem Login kopieren

In Anwendungen, die die Datengenauigkeit sicherstellen müssen, können mehrere Prozesse versuchen, dieselben Daten gleichzeitig zu ändern, und diese Sperrmechanismen sind entscheidend.

Das obige ist der detaillierte Inhalt vonVerwalten von Datenrennen mit pessimistischem Sperren in Laravel. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage