• 18-01-2020, 23:34:54
    #10
    Üyeliği durduruldu
    Saniyede bir kontrol etmek istiyorsaniz, setInterval methodu ile surekli db yi kontrol edecek bir query yapabilirsiniz,

    setInterval(() => {
      connection.query("SELECT date from table", (err, res) => {
        if (res == Date()) { 
          connection.query("UPDATE table SET bit = 1")
        }
      })
    }, 1000)
    gibi
  • 18-01-2020, 23:35:34
    #11
    L0pht adlı üyeden alıntı: mesajı görüntüle
    O zaman ben olsam ne yapardım onu söyleyeyim.

    Sürekli sorgu ile boğmamak için;

    Kullanıcının ilk girişinde veritanindaki sabit saati alırım, time a çeviririm, 60sn de bir çalışacak js interval ile kontrol ettiririm.

    Sürekli sorgu gerektirecek bir durum olduğunu goremiyorum sizin anlattıklarınızdan ya da ben yanlış anlıyorum.
    Şöyle hocam kullanıcı bu datetimeın tutulduğu tabloya kendi panelinden veri ekleyebiliyor. Veriyi eklediğinde yeni bir veri ve yeni bir saat ortaya çıkıyor. Bu şekilde sürekli her saati tutmak mümkün olmayacak seviyeye geliyor.



    yrr3bn14r adlı üyeden alıntı: mesajı görüntüle
    Saniyede bir kontrol etmek istiyorsaniz, setInterval methodu ile surekli db yi kontrol edecek bir query yapabilirsiniz,

    setInterval(() => {
      connection.query("SELECT date from table", (err, res) => {
        if (res == Date()) {
          connection.query("UPDATE table SET bit = 1")
        }
      })
    }, 1000)
    gibi
    Deniyorum hocam ama bu kodu ben frontend de mi yapayım node js tarafında mı uygulayayım
  • 18-01-2020, 23:38:19
    #12
    Üyeliği durduruldu
    Siz tam olarak yapmak istediginiz yapiyi ve ne ise yarayacagini, nasil kullanilacagini acikca yazabilirseniz projenin bu kismini yani; size performansli ve mantikli cevaplar uretebiliriz.
  • 18-01-2020, 23:40:19
    #13
    MySQL tarzi bir RDBMS ise trigger konusunu arastirman lazim. ON INSERT ve ON UPDATE tarz bir sey isini gorur. Zamani da NOW() fonksiyonu ile aliyorsun galiba. Onun disinda kullandigin DB sistemini bilmeden pek bise diyemem. Mongo'da degisiklikleri izleyebiliyorsun mesela anlik olarak.
  • 18-01-2020, 23:43:55
    #14
    yrr3bn14r adlı üyeden alıntı: mesajı görüntüle
    Siz tam olarak yapmak istediginiz yapiyi ve ne ise yarayacagini, nasil kullanilacagini acikca yazabilirseniz projenin bu kismini yani; size performansli ve mantikli cevaplar uretebiliriz.
    Tabii ki hocam. Aslında benim yapmak istediğim şey bir hatırlatma özelliği.

    Hatırlatma özelliğinde kullanıcı bir tarih ve saat girecek panelden. Bir de hatırlatma metni girecek. Bu girdiği değerler veritabanına gönderilecek ve kayıt edilecek.Veritabanında bu değerlerin yanı sıra bir de "hatirlatildimi" diye bir değer tutuyorum. Bu değer ise bit bir değer. Yani eğer 1 ise hatırlatıldı değil ise hatırlatılmadı olarak tanımlı.

    Eğer normal saatimiz veritabanındaki bu saat ile uyuşursa bit değer 1 yapılacak ve direkt kullanıcı panelinde bir notification bar göstereceğim. Bunu ajax ile yapabiliyorum bar mevzusunu. Ancak arkaplanda sürekli zamanı kontrol etmem gerekiyor. var date = new Date() yaptığımda o andaki saati tutabiliyorum sadece backendde. Bunun bir çözümünü arıyorum açıkçası. Nasıl aynı anda zamanı kontrol ediyorken aynı anda da database deki zamanla eşleşiyor mu diye kontrol edebilirim? Eğer yapabilirsem gerisi gelecek zaten.

    Umarım anlatabilmişimdir hocam. İsterseniz canlı konuşalım anlatayım derdimi
  • 18-01-2020, 23:45:44
    #15
    Birden fazla veri için;

    Bir üstte yazdığıma ek olarak;
    Sorgu : select * from datatablosu where userid=2 and bit=0 gibi,
    Gelen verileri bir array a alip (id ve zamanlari) ayni sekilde intervalde kontrol ettirip güncellerim.

    Tabi ek olarak kullanıcı işlem yaptığında oluşan verinin de diziye eklenmesi gerekiyor. Alternatif olarak ise diziyi boşaltıp yeniden sorgu yapılması gerekiyor.
  • 18-01-2020, 23:49:10
    #16
    berkantipek adlı üyeden alıntı: mesajı görüntüle
    MySQL tarzi bir RDBMS ise trigger konusunu arastirman lazim. ON INSERT ve ON UPDATE tarz bir sey isini gorur. Zamani da NOW() fonksiyonu ile aliyorsun galiba. Onun disinda kullandigin DB sistemini bilmeden pek bise diyemem. Mongo'da degisiklikleri izleyebiliyorsun mesela anlik olarak.
    Şöyle hocam Mssql kullanıyorum ve aynı zamanda triggerlar konusunda da bilgim var. Dediğiniz sadece veritabanı üzerinde işlemekte. Onu da denedim fakat benim server tarafında kontrolü sağlamam lazım. Veritabanından servera veri dışında bir şey gönderemediğimi düşünüyorum açıkçası. Eğer gönderebiliyorsak onu yapayım hemen vallahi. Teşekkürler cevabınız için yine de
  • 18-01-2020, 23:54:47
    #17
    Üyeliği durduruldu
    emrecanozkan adlı üyeden alıntı: mesajı görüntüle
    Tabii ki hocam. Aslında benim yapmak istediğim şey bir hatırlatma özelliği.

    Hatırlatma özelliğinde kullanıcı bir tarih ve saat girecek panelden. Bir de hatırlatma metni girecek. Bu girdiği değerler veritabanına gönderilecek ve kayıt edilecek.Veritabanında bu değerlerin yanı sıra bir de "hatirlatildimi" diye bir değer tutuyorum. Bu değer ise bit bir değer. Yani eğer 1 ise hatırlatıldı değil ise hatırlatılmadı olarak tanımlı.

    Eğer normal saatimiz veritabanındaki bu saat ile uyuşursa bit değer 1 yapılacak ve direkt kullanıcı panelinde bir notification bar göstereceğim. Bunu ajax ile yapabiliyorum bar mevzusunu. Ancak arkaplanda sürekli zamanı kontrol etmem gerekiyor. var date = new Date() yaptığımda o andaki saati tutabiliyorum sadece backendde. Bunun bir çözümünü arıyorum açıkçası. Nasıl aynı anda zamanı kontrol ediyorken aynı anda da database deki zamanla eşleşiyor mu diye kontrol edebilirim? Eğer yapabilirsem gerisi gelecek zaten.

    Umarım anlatabilmişimdir hocam. İsterseniz canlı konuşalım anlatayım derdimi
    Anladim hocam, guzel yazmissiniz.

    Bu hatirlaticinin calisacagi process icin konusacak olursak, ilk once ilgili db tablodan hatirlatmasi yapilmayan zamanlari cekip bi array' e atadigimizi dusunun yani;

    var notifications = [
      {
        date: 1579380495241, 
        msg: 'bugun sunlar yapilacak'
      },
      {
        date: 1579389456764,
        msg: 'bugun bunlar yapilacak'
      }
    ]
    sonra setinterval methoduyla her saniyeyi kontrol edip bu yukaridaki notifications arrayindaki element' lerden cakisan olursa o element icin istediginiz islemi yapabilirsiniz, boylelikle surekli db kontrolu yapmamis olursunuz ve process icinde her saniyede basit bi if kontrolu ile array taramis olursunuz, ayrica sanirim notification sistemi uzerinde calisiyorsunuz bunun ile ilgili benzer ornekleri de internette yabanci kaynaklardan arastirabilirsiniz,

    https://www.google.com/search?rlz=1C...10.gdW0CVCPRV0

    Son olarak, db uzerinden bir kontrol yapmadan da socket.io ile gondereceginiz notificationlari client tarafinda direk alip isleyebilirsiniz, ayni zamanda db' ye de ekleyebilirsiniz bunun icinde soyle bir ornek var.

    https://stackoverflow.com/questions/...ations-node-js
  • 19-01-2020, 00:00:54
    #18
    yrr3bn14r adlı üyeden alıntı: mesajı görüntüle
    Anladim hocam, guzel yazmissiniz.

    Bu hatirlaticinin calisacagi process icin konusacak olursak, ilk once ilgili db tablodan hatirlatmasi yapilmayan zamanlari cekip bi array' e atadigimizi dusunun yani;

    var notifications = [
      {
        date: 1579380495241,
        msg: 'bugun sunlar yapilacak'
      },
      {
        date: 1579389456764,
        msg: 'bugun bunlar yapilacak'
      }
    ]
    sonra setinterval methoduyla her saniyeyi kontrol edip bu yukaridaki notifications arrayindaki element' lerden cakisan olursa o element icin istediginiz islemi yapabilirsiniz, boylelikle surekli db kontrolu yapmamis olursunuz ve process icinde her saniyede basit bi if kontrolu ile array taramis olursunuz, ayrica sanirim notification sistemi uzerinde calisiyorsunuz bunun ile ilgili benzer ornekleri de internette yabanci kaynaklardan arastirabilirsiniz,

    https://www.google.com/search?rlz=1C...10.gdW0CVCPRV0

    Son olarak, db uzerinden bir kontrol yapmadan da socket.io ile gondereceginiz notificationlari client tarafinda direk alip isleyebilirsiniz, ayni zamanda db' ye de ekleyebilirsiniz bunun icinde soyle bir ornek var.

    https://stackoverflow.com/questions/...ations-node-js
    Tamamdır hocam çok teşekkürler. Eğer sorun yaşarsam size ulaşabilir miyim acaba?