deathisonitsway
Selam arkadaşlar,konu dışı olabilir..o yüzden şimdiden affola..bugun uygulamada bir hata keşfettim..daha doğrusu öyle oldugunu dusunuyorum..ki butun bulgular o yonde..
gsm operatorune ödeme kaydı gonderiyorum..ve bunu arkada cron yapıyor...bir kullanıcı icin operator soyle donuyor bana... iptal olmuş hizmeti başarılı diye gonderiyorsunuz bize diyor..
burası çok onemli ne demek ki bu derken..ben crondan gonderdiğim saniyede nasıl denk getirilmişse..kullanıcı hizmeti iptal etmiş..
ve ben hizmet gonderiyorum operatore..ama diyor ki..iptal edilmişi bana nasıl gonderiyorsun diyor..
uygulamayı laravelle yazıyorum...saniyelere takılan bir case hatta milisaniyelere takılan bir case..nasıl yapabiliriz bunu..laravelde db de sanırım sharedLock var ama hic kullanmadım ben bunu..
bununla mı engelelyebiliriz..
evrend
İşiniz bitene kadar, manuel olarak ilgili kaydı lock edilmiş gibi bir kontrol yapabilirsiniz. select işlemini yapmadan lock_boolean gibi bir alanı true yapıp, işlemler tamamlanıp operatörden değer döndükten sonra false yapabilirsiniz. Bu durumda update işleminde eğer lock_boolean false ise update et gibi bir kontrol yapmalısınız.
deathisonitsway
yani diyorsun ki..sadece bir kişi görsün ikinci kişi aynı anda geldiğinde lock etsin..bunu innodb otomatik olarak yapmıyormuydu ki..
evrend
İnnodb row bazında lock yapıyor mu emin değilim, hiç kullanmadım. Tablo bazında lock yapar ama sizin durumunuzda o çok istenen bir durum değil. Backup import ederken falan kullanılması mantıklı. Benim demek istediğim, bir veriyi işlerken(Sizin ne yapmak istediğinizi tam bilmiyorum, verinin bi işlem gerçekleşene kadar değişmemesini istediğiniz durumda) işlemeden önce ilgili kaydı manuel lock'lamak ve işlem tamamlandığında lock'ı manuel kaldırmak. Diğer taraftan before triggerları ile lock var mı varsa hata fırlat diye kontrol edebilirsiniz. Yada laravel ile ilk önce select ederek kontrol edilebilir(transaction kullanabilirsiniz).