Aynı kayıtları işleme birden çok web isteklerini önlemek için nasıl?

3 Cevap php

Bunu bazı kazanan numaraları ile bir tablo var diyelim. Bu sayıların herhangi bir kişi tarafından sadece "kazandı" olması gerekiyordu.

Nasıl sayısı mevcut olan artık olarak işaretlenir önce kontrol ve sayılar hala mevcut olduğunu görüyoruz ve daha sonra her ikisi de ödül veriyoruz hem aynı numaraları göndermeniz 2 eş zamanlı web isteklerini engelleyebilir.

Aynı zamanda en veritabanı platformlarda uygulanabilir gibi this question olarak kazanan çözüm, ne yaptığımı düşünüyordum ne gibi hissediyor.

Bu uygulanabilir başka bir ortak model var mı?

3 Cevap

Bu numaralar rasgele oluşturulmuş falan vardır?

Ben veritabanının kendisi de işlem semantik itimat ederdi: iki sütun, sayı ile bir tablo oluşturun ve iddia, ve tek bir güncelleştirme kullanabilirsiniz:

UPDATE winners SET claimed=1 WHERE claimed=0 AND number=@num;

Sonra etkilenen satır sayısını kontrol edin.

Işlemleri kullanarak. Sen işlem kilitleri olmadan aynı verileri değiştirmeden birden konuları ya da süreçleri var asla ve herhangi bir iyi bir veritabanı bugün işlemleri destekler. Kazanan numara "kapmak", ve sonra işlemek, işlem başlatın. Başka bir iş parçacığı işlemeye kadar kilitli olacaktır, ve onun zaten orada görmek ne zaman kayıtlar, güncellendikten sonra sadece şans olacaktı.

Olmayan bir veritabanı çözümü istemci isteği uyumsuz yapmak ve sonra bir anda sadece tek bir isteği değerlendirilir oluyor böylece isteklerini kontrol etmek için bir FIFO kuyruğa isteği itmek sahip olabilir. Değerlendirme işlemi tamamlandıktan sonra müşteriye geri cevap. Burada avantajı veritabanı seviyesinde işlem kilitleme ile nerede olacağını, yüksek yük altında, UI donmuş olmaz olurdu.