Kodları lütfen aşağıdaki butonları kullanarak renklendirin. Örnek: <php> echo "Selam Dünya"; </php>
Yardım
karakter kaldı

sql gerçekten uzman sorusu

arkadaşlar biliyorsunuz devamlı sorgu atmak kastırır. Biz online oyun işine girdik ancak bizim şöyle bir sorunumuz var.bir stok tablosu düşünelim,her kullanıcının farklı olmak üzere odun-demir-taş gibi hammedelerimiz var ve bunlar saatlik kazanç tablosuna göre artmakta. biz sql'de event ile her 15dakikada sorgu çalıştırıyoruz ve stokları, saatlik kazançlarına göre güncelliyoruz. site üzerinde ise, bir kere sorgu attıktan sonra javascript-ajax yardımıyla stokları her saniye artırıyoruz(klansavasları-travian vb. sitelerdeki gibi). sorun şurda başlıyor: kullanıcı siteye girdiğinde kaynakları sqlden bir kere sorgulattığımız esnada örneğin odun: 500 artık ajax ile kullanıcının saatlik kazancına göre her saniye artırıyoruz. örn..
505
510
515
520
......
bu sırada kullanıcı siteden direk çıkıyor. sonra tekrar açıyor ve sql üzerinde 15dakika geçmediği için kaynaklarında odun hâla 500 olarak gözüküyor. Bu sorun nasil çözülecek. Teşekkürler Şimdiden
+0
-0
Cevaba KatılıyorumKatılmıyorum
Cevap Yaz Yorum Yaz Arşivime Ekle Takip Et

Doğru Cevap

  • Supervisor adlı üyenin fotoğrafı
    10 yıl önce yazılmış
    107 cevap - 0 soru
    Ona benzer bir sey bende dusunmustum. Benim tablo yapim ornegin su sekildeydi.

    kullaniciId odunmiktari odunsaniyelikartismiktari mermer mermersaniyelikartismiktari lastupdatedate
    1 500 1 800 2 2011-12-05 13:00

    gibi. daha sonra dediginiz gibi 15 dk da bi job ile stok miktarini guncellleyip , kullanici da siteye her girdiginde stok mikktarini artim miktari ile carpip tekrar hesaplayip veriyordum. kullanici taraifinda yine js ile arttiriyordum ama sql tarafidnda bir sey yok ama tutarli oluyordu. ben bu yontemi kullanmistim
    • Supervisor adlı üyenin fotoğrafı Supervisor
      bu sekilde oyuncunun odunu gelistirme seviyesine gore saniyelik artim miktarini da ayarlaryip ona gore yukseltiyordum.
      10 yıl önce yazılmış
    • Supervisor adlı üyenin fotoğrafı Supervisor
      Mesela , Ikariam dan ornek vereyim .
      kaynaklar :
      tip
      1 odun
      2 mermer
      3 sarap
      4 sulfur
      5 kristal

      tablo oyuncular
      id adi
      1 supervisor
      2 ali
      3 cengaver

      tablo mevcutKaynaklar tablo alanlari
      oyuncuid
      odunmiktari
      odunsaniyelikartismiktari
      mermermiktari
      mermersaniyelikartismiktari
      kristalmiktari
      kristalsaniyelikartismiktari
      sarapmiktari
      sarapsaniyelikartismiktari
      sulfurmiktari
      sulfursaniyelikartismiktari
      songuncellemetarihi


      ornek kayit
      tablomevcutkaynaklar


      oyuncuid 1
      odunmiktari 600
      odunsaniyelikartismiktari 1
      mermermiktari 800
      mermersaniyelikartismiktari 2
      kristalmiktari 900
      kristalsaniyelikartismiktari 1
      sarapmiktari 700
      sarapsaniyelikartismiktari -1
      sulfurmiktari 900
      sulfursaniyelikartismiktari 2

      songuncelleme 2011.12.14 12:00

      yukaridaki mesela mevcutkaynaklar tablosundaki bir kayit olsun. oyuncu oyuna girdigi anda
      ilk islem kaynaklari guncellemek.
      @sure = DateTime.Now - SonGuncelleme Tarihi = mesela 8000 sn

      update mevcutkaynaklar set odun=odunsaatlikartismiktari*@sure ,.... songuncellemetarihi=DateTime.Now

      select * from kaynaklar seklinde de browsera gondermek .

      sayfada da artis miktari kadar javascript ile kaynagi duzenlersin .

      mesela , sehirde odunu gelistirip seviye arttirirsa odunsaniyelikartis miktari alanini arttirirsin.
      Tabi is akisina gore ara ara bunlari sql job ile update de edebilirsin
      gibi
      10 yıl önce yazılmış
    • Supervisor adlı üyenin fotoğrafı Supervisor
      Ve mesela isciler tablonda da

      oyuncuid
      oduniscisi
      mermeriscisi
      sulfuriscisi

      olur. burdan hesaplamani yaparsin . mevcutkaynaklar tablondaki saatlikartismiktarini guncellersin .
      yada arastirma seviyeleri

      oyuncuid
      odunarastirmasiseviye

      onlan carpip buna bolersin vs

      tabi bunlarin hepsi is akisi ile alakali , saniyelik artisi hesaplayip , mevcut kaynaklar alanini guncellersin
      10 yıl önce yazılmış
    • gungnir89 adlı üyenin fotoğrafı gungnir89
      teşekkür ederim. oyuncu online olduğu an dediğin gibi , son güncelden o ana kadar geçen saniyeyi bulup sql üzerinde sorgu atıp, 15dakika başlatma zamanını başa alabilirim. 10 numara.
      10 yıl önce yazılmış

Cevaplar

  • mystic adlı üyenin fotoğrafı
    10 yıl önce yazılmış
    1 cevap - 0 soru
    Kullanıcı oturum açtığında saatlik kazanç tablosunda stoklara aktarılmamış veri var mı diye kontrol ettirip ona göre 500 değerini de ekrana artmış haliyle yazdırmayı deneyebilirsin.
  • gungnir89 adlı üyenin fotoğrafı
    10 yıl önce yazılmış
    25 cevap - 13 soru
    @supervisor biraz daha açar mısın kafam kaldırmadı:D

    @mystic :durum tam o şekilde değil.
    stok tablosunda
    kulllanici id-odun-demir-tas
    saatlikkazanctablosunda
    kullaniciid-saatlikodunartis-saatlikdemirartis-saatliktasartis.
    saatlik kazanç tablosundaki veriler, kullanıcının odun-demir-tas madenlerinde ne kadar koylu çalıştırdığına göre değişiyor. misal 20 kişi odun madeninde çalışsın emri verdiğinde saatlikodunartisi 200 diye update atiliyor. sql üzerinde event ile 15dakikada bir sorgu çalıştırarak stok tablosundaki oduna saatlikodunartisi/4(15dakikalık kazanc) ekliyoruz. kullanici siteye girdiğinde ise stoklarını ve saatlik_kazançlarını javascripte gönderiyoruz. orada her saniye, çalışan sorgu ile saniyedekazandığı miktarıhesaplayıp, stoğuna ekleyip kullanıcıya gösteriyoruz.kullanıcı sayfada odunu artmış olarak görüyor. ancak sql üzerinde henüz 15dakika dolmadı ve update atmadı. siteden çıkıp tekrar girdiğinde, stok tablosundan tekrar artmamış halini başlatmış oluyoruz. sorun da biraz karışık.
    • siyahbeyaz adlı üyenin fotoğrafı siyahbeyaz
      dostum sorunun cok basit. bildigin gibi sitedeki online sayısı sistemini görmüsündür...
      kullanıcı sayfada bulundugu surece giris_tarih alanı guncellenior. sql ile giris_tarihi ile suanki tarih arasindaki 15 dk farkı kontrol ettiribilirsiniz...
      10 yıl önce yazılmış