none
Süreli kayıtlar oluşturma RRS feed

  • Soru

  • yapacak olduğum websitemde belli bir süre sonra pasif olacak kayıtlar olacak. Örneğin otobüs sitelerinde bilet alınırken önceki kayıtları seçemiyoruz. Yani kullanıcı bir kayıt oluşturup ona belli bir süre atayacak o süre sonunda ise otomatik olarak oluşturduğu kayıt pasifleşecek. Bunu nasıl yapabilirim?
    3 Mayıs 2014 Cumartesi 21:38

Yanıtlar

  • Şöyle yapabilirsin:

    Kullanıcının sitede işlem yapma tarihini Session'da tutarsın. Örneğin 10:30'da bilet seçimini yaptı. 15 dakika içinde bilet alım işlemini gerçekleştirmezse seçiminin iptal olmasını, bilet seçim sayfasında, sessionın saatini alıp (10:30'u) 15 dakikayı ekleyip şimdiki zamanla karşılaştırırsın. Diyelim saat 10:50'de sayfayı açtıysa seçimi iptal olsun (senin deyiminle kayıt pasifleşsin). Yalnız bu yöntem, tarayıcı açık kaldığı sürece geçerli olur. Eğer aynı tarayıcı içinde sürekli geçerli olmasını istiyorsan Coockie kullanabilirsin. Farklı yerlerden (farklı tarayıcılardan) da bu pasifleşecek kaydın görünmesini istiyorsan veritabanında tutabilirsin.

    Tavsiyem, eğer otobüs firmalarının satış sitesine benzer bir yapı varsa, işlemin yapıldığı saati Session'da tutup, belirlediğin süre dolunca kaydı Session'dan silmen yönündedir. Böylelikle geçici kayıtları veritabanında tutup gereksiz yere hem bağlantı açıp hem de tabloda kayıt tutmazsın. Kayıtların silinmemesi (tabloda) kalması durumunda çöp kayıtların sayısı artacak ve tablo bir süre sonra şişmeye başlayacak, sorguların çalışma süresi artacaktır.


    Software Engineer http://www.yazilimdilleri.net http://www.ugurkizmaz.com

    5 Mayıs 2014 Pazartesi 08:14

Tüm Yanıtlar

  • Bu sorunuzun cevabını ya event olarak yapabilirsiniz. Ya da Windows servisi ile. Ya da en eski çözümlerden olan sql server planları ile.
    3 Mayıs 2014 Cumartesi 21:45
  • teşekkür ederim. Biraz daha açabilirmisiniz acaba?
    3 Mayıs 2014 Cumartesi 21:48
  • Bir kaydın aktif/pasif olduğunu geçerlilik tarihi belirler. Kaydı kullanıcıya gösterirken, Database deki tarih eski ise pasif değilse aktif olarak göstereceksiniz bu kadar.

    www.mvcblog.org
    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com
    MCC

    • Yanıt Olarak Öneren Aslan E 4 Mayıs 2014 Pazar 09:17
    4 Mayıs 2014 Pazar 08:53
    Moderatör
  • Şöyle yapabilirsin:

    Kullanıcının sitede işlem yapma tarihini Session'da tutarsın. Örneğin 10:30'da bilet seçimini yaptı. 15 dakika içinde bilet alım işlemini gerçekleştirmezse seçiminin iptal olmasını, bilet seçim sayfasında, sessionın saatini alıp (10:30'u) 15 dakikayı ekleyip şimdiki zamanla karşılaştırırsın. Diyelim saat 10:50'de sayfayı açtıysa seçimi iptal olsun (senin deyiminle kayıt pasifleşsin). Yalnız bu yöntem, tarayıcı açık kaldığı sürece geçerli olur. Eğer aynı tarayıcı içinde sürekli geçerli olmasını istiyorsan Coockie kullanabilirsin. Farklı yerlerden (farklı tarayıcılardan) da bu pasifleşecek kaydın görünmesini istiyorsan veritabanında tutabilirsin.

    Tavsiyem, eğer otobüs firmalarının satış sitesine benzer bir yapı varsa, işlemin yapıldığı saati Session'da tutup, belirlediğin süre dolunca kaydı Session'dan silmen yönündedir. Böylelikle geçici kayıtları veritabanında tutup gereksiz yere hem bağlantı açıp hem de tabloda kayıt tutmazsın. Kayıtların silinmemesi (tabloda) kalması durumunda çöp kayıtların sayısı artacak ve tablo bir süre sonra şişmeye başlayacak, sorguların çalışma süresi artacaktır.


    Software Engineer http://www.yazilimdilleri.net http://www.ugurkizmaz.com

    5 Mayıs 2014 Pazartesi 08:14
  • Şöyle yapabilirsin:

    Kullanıcının sitede işlem yapma tarihini Session'da tutarsın. Örneğin 10:30'da bilet seçimini yaptı. 15 dakika içinde bilet alım işlemini gerçekleştirmezse seçiminin iptal olmasını, bilet seçim sayfasında, sessionın saatini alıp (10:30'u) 15 dakikayı ekleyip şimdiki zamanla karşılaştırırsın. Diyelim saat 10:50'de sayfayı açtıysa seçimi iptal olsun (senin deyiminle kayıt pasifleşsin). Yalnız bu yöntem, tarayıcı açık kaldığı sürece geçerli olur. Eğer aynı tarayıcı içinde sürekli geçerli olmasını istiyorsan Coockie kullanabilirsin. Farklı yerlerden (farklı tarayıcılardan) da bu pasifleşecek kaydın görünmesini istiyorsan veritabanında tutabilirsin.

    Tavsiyem, eğer otobüs firmalarının satış sitesine benzer bir yapı varsa, işlemin yapıldığı saati Session'da tutup, belirlediğin süre dolunca kaydı Session'dan silmen yönündedir. Böylelikle geçici kayıtları veritabanında tutup gereksiz yere hem bağlantı açıp hem de tabloda kayıt tutmazsın. Kayıtların silinmemesi (tabloda) kalması durumunda çöp kayıtların sayısı artacak ve tablo bir süre sonra şişmeye başlayacak, sorguların çalışma süresi artacaktır.


    Software Engineer http://www.yazilimdilleri.net http://www.ugurkizmaz.com

    Merhabalar soru yanıtlanmış ama birşey söylemek istiyorum.

    Mesala bilet satış işleminde kaydı Session da tutsun demişsiniz ama bir kişi o koltuktaki işlemi tamamlamadan başka bir kişi aynı koltuğu almak isterse bu na izin verilmiş olur ki bu istenmeyen bir durumdur.

    Veritabanı dah mantıklı sanki(belli sıklıkla temizlenebilir eskiden yeniye gibi...)

    Sadece belirtmek istedim.

    Kolay gelsin.


    Yunus Emre ALTINAY

    6 Mayıs 2014 Salı 11:57
  • 1. Veritabanında bir geçici tabloda tutabilirsin. Yalnız tabloyu günde 1 kez job ile temizlemen lazım. Eğer hosting kullanıyorsan job kullanımına izin vermezler. Bu yüzden bir uygulamayla akşamları temizlemende fayda var (örneğin 23:00'da temizlerken kayıt saati 22:30'dan öncesini temizlersen o an işlem yapanları almazsın). 

    2. Asp.Net Application State üzerinde rezerve edilmiş koltukları tutabilirsin. Hem session hem application stateleri kullanırsan güzel bir yapı ortaya çıkar yalnız kullanılmayan application nesnelerini 15 dakikada bir (örneğin yeni application nesnesi tanımlama sırasında olabilir) temizlemen gerekir. Bu sebeple bu yapıyı dikkatli kurmakta fayda var.


    Software Engineer http://www.yazilimdilleri.net http://www.ugurkizmaz.com

    6 Mayıs 2014 Salı 12:37
  • Peki sorgularken aplication state üzerindeki koltuk numaralarını alıp sorgulama yapılabilir mi?

    Yani ben ve başka birisi aynı koltuğu seçti ama satın almadı bunu engellemek için kişinin koltuk numarasını application service te tutup oradan okuyup sorgulamak mümkün mü?

    Eğer mümkünse örnek kod varsa paylaşırsanız sevinirim. Çünkü bunu daha önce aramıştım ama pek sağlıklı birşey bulamadım.

    Teşekkürler.

    Kolay Gelsin.


    Yunus Emre ALTINAY

    6 Mayıs 2014 Salı 12:43