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

sql üzerinden tetikleyici bir sistem

bir browser oyunu yapımındayız. Ve savaş sistemini şuanda; oyuncu karşı tarafa 'saldır' dediği anda sayfa üzerinde gerçekleştiriyoruz. Ancak ordunun karşı tarafın mesafesine göre belli bir sürede gitmesi gerekiyor. bu süre geldiğinde savaş yapılacağı için savaş sistemi sql üzerinde olmalı. veritabanina atiyorum savaş zamanını, 2012-02-15 21:24:21 olarak girdik. bu zaman geldiğinde nasil tetikleyici bişey yapabiliriz?

bu soruyu daha önce benzer şekilde sormuştum. mysql agent job ile dendi. ancak ben netten düzgün bir kaynak örnek bulamadım. bu tür kaynaklar örnekler de işime yarar. şimdiden teşekkürler

araştırdığım kadariyla bu agent job olayı- event sisteminden farkı yok sanirim. biz event kullanıyoruz zaten ancak bu şekilde savaş sistemindeyken her saniye kontrol ettirmek ciddi bir yük olmaz mı?
+0
-0
Cevaba KatılıyorumKatılmıyorum
Cevap Yaz Yorum Yaz Arşivime Ekle Takip Et

Doğru Cevap

  • xuma adlı üyenin fotoğrafı
    11 yıl önce yazılmış
    171 cevap - 1 soru
    En basit cevap olarak bu tip sistemlerde cron job veya zamanlı işler kullanılmıyor.Yani bu konuları araştırmakla zaman kaybetme.Ogame,travian clonlarında da bunu görebilirsin.Herhangi bir şekilde zamanlı iş tanımlamak çok ağır yükler getirir.Eğer bu tarz oyunlar üzerinde çalışıyorsan clone script'leri incelemeni tavsiye ederim.
    • gungnir89 adlı üyenin fotoğrafı gungnir89
      clone scriptlerini araştırayim, dediğiniz gibi onların kullandıkları cronjob olayı gibi gelmiyor bana da. b bir bilen çıkar umarım
      11 yıl önce yazılmış

Cevaplar

  • sagoral adlı üyenin fotoğrafı
    11 yıl önce yazılmış
    38 cevap - 2 soru
    http://www.webyog.com/en/sqlyog_feature_matrix.php bu adresteki son satır senin işini görecek olan, fakat ücretli bir yazılım bu webyog
    • gungnir89 adlı üyenin fotoğrafı gungnir89
      nasıl çalıştıkları hakkında bilgi vermemişler sitede ama bu da cronjob ile aynı işi yapıyor anladığım kadarı ile, değil mi? yani bir dosyayı belli aralıklarla çalıştırmamızı sağlayan sistemlerden. savaş sistemi de hassas bir olay 10dakkada 1 ya da dakkada 1 olmamalı saniyelerin bile önemi var. saniyede 1 çalıştırırsam da ciddi bir yük olur sanıyorum.
      11 yıl önce yazılmış
    • sagoral adlı üyenin fotoğrafı sagoral
      Şöyle bir mantık yürütebilirsin.. Zamanlı çalışma yapma,

      Yapılacak işlemleri yine vt'ye kaydet... Mesela ben düşmana saldırdım.. Saldırının gerçekleşme vakti 1235675271 olarak ayarlandı..

      her sayfanın başında şöyle bir kontrol yap(kullanıcıya bağımlı olmadan. Yani ben bir sayfa açtığımda diğer kullanıcılarında kontrolleri gerçekleşsin):
      $zaman = 1235675271;
      $zarti10 = $zaman + (60*10);
      if(time()>=$zarti10){
      // Eğer zaman koşulu sağlandıysa bu görevleri işle...
      // Daha sonra queu yani bekleyen işler tablosundan bu veriyi sil
      // Bunun için bekleyen işlemler tablosu oluşturman en mantıklısı olacaktır, diğer şekilde saldırı tablosundaki yüz binlerce satır arasından işlem yapması uzun sürer ;)
      }
      

      Demek istediğimi anlatabilmişimdir umarım
      11 yıl önce yazılmış
    • gungnir89 adlı üyenin fotoğrafı gungnir89
      demek istediğini anladım da böyle birşekilde yapmak sağlıklı gözükmüyor. yine de teşekkürler
      11 yıl önce yazılmış
    • sagoral adlı üyenin fotoğrafı sagoral
      Yani zamanlı işlemleri sıraya alacaksın her sayfa işleminde sırası gelen işlemler gerçekleşecek.. Her saniye cron'dan daha sağlıklı bence ;)

      Şu ana kadar bu başlık altında sunulan en mantıklı çözüm bu ;)
      11 yıl önce yazılmış