çok kullanıcılı bir uygulama kayıt kilitleme - en iyi yöntem?

3 Cevap php

Ben aynı anda birden çok kullanıcıyı destekliyor bir PHP / MySQL uygulama geliştiriyorum. Ben şu anda düzenlenebilir / izlendi ediliyor kayıtlara karşı kilitleme / uyarı geldiğinde almak için en iyi yaklaşımın düşünüyorum.

Tek bir değişiklik önceki yazmasına sebep olabilir ki potansiyeli ile - önlemek için senaryo daha sonra kaydını inceleyen iki kullanıcı, tek bir değişiklik yaparak, diğer aynı şekilde yapıyor.

WordPress'in son sürümlerinde bu algılamak için bazı yöntem kullanmak, ancak bunun tamamen güvenilir görünmüyor - genellikle en azından benim deneyim, yanlış pozitif dönen.

Ajax çeşit 'ping' uygulaması yerinde ve rekor hala (aksi takdirde, bir kullanıcı sadece kendi tarayıcı penceresini kapatabilir ve daha sonra nasıl bir uygulama olduğunu bilemez) düzenlenebilir / izlendi ediliyor bildirmek gerekir varsayıyorum.

Ve daha sonra kullanıcıya kendi değişikliklerini veya devam atmak için bir seçenek sunuyoruz - ben görebiliyordum başka bir çözüm, bir kayıt güncelleme için gönderilen son güncelleme zamanını kontrol etmek için geçici olarak başka bir yerde güncelleştirilmiş olup olmadığını görmek için.

Belki de ben bir çözüm açısından yanlış ağaca havlıyor ediyorum - bu uygulama halkları deneyimleri gereksinimi (ne oldukça yaygın olmalıdır) nelerdir?

3 Cevap

Ben bu yapacağını: düzenleme şeklinde son değişiklik zamanını saklayın. Veritabanında saklanan zaman teslim bu kez karşılaştırın. Onlar aynı ise, kilit tablo (değişiklik zamanı ile birlikte) verilerini güncellemek ve tablo kilidini. Kez farklı ise, bu konuda kullanıcıyı bilgilendirmek ve bir sonraki adım için isteyin.

Damgası karşılaştırma ile iyi fikir. Bu uygulamaya ucuz ve üretimde çalıştırmak için ucuz bir operasyon. Birisi onları yenmek, çünkü sadece kendi yazma / güncelleme meydana gelmediği kullanıcıya durum mesajı geri göndermek için mantığı yazmak zorunda.

Belki 'LastUpdateBy' gibi bir şey denilen bir alanda her güncellemede adınızı depolama düşünün ve ön empted onların güncelleme vardı kullanıcıya bu geri dönün. Kullanıcı için sadece küçük bir ayrıntı. Kurumsal anlamda güzel, belki bir ortamda uygun olmayabilir değil nerede.