folder Tahribat.com Forumları
linefolder Asp - Php - Cgi - Perl
linefolder Uygulamadaki Kullanıcıyı Nasıl Kontrol Edebilirim ?



Uygulamadaki Kullanıcıyı Nasıl Kontrol Edebilirim ?

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    h0rtl4kk
    h0rtl4kk's avatar
    Kayıt Tarihi: 10/Şubat/2014
    Erkek

    Müşterime geliştirmiş olduğum online bir oyunum var. Kullanıcı oyunu açtığı zaman örneksite.com/user.php sayfasına beni online yap şeklinde post işlemi yapıyor. Site veritabanında bu kişiyi online olarak gösteriyor.

    Kullanıcı oyundayken (online olduğu zaman) internet erişimi koparsa ve oyunu kapatırsa bu kişi hep online olarak gözüküyor. İnterneti olmadığı için oyunu kapattığında siteye beni offline yap diyemiyor.

    Veritabanında durumu online olan kişileri belirli aralıklarla kontrol etmem gerekiyor. Bir nevi oyun nasıl siteye post atıyorsa siteden de oyunun yüklü olduğu telefona/ip adresine veri gönderip veri ulaşmadıysa kişiyi offline'a çevirmem gerekiyor.

    Bu bahsettiğim kontrol işlemini siteyi yavaşlatmadan nasıl yapabilirim ?

    Oyunda C# kullanıyorum.

  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    DuPi
    DuPi's avatar
    Kayıt Tarihi: 21/Ağustos/2005
    Erkek

    Veri tabanı sunucunda crontab yap 10 dk boyunca ben burdayım demeyeni oflline yap c# tan 9dk da bir ben burdayım de

     


    Ne zaman birşey öğrenmek istesem, Birden Vaktim Kalmıyor ?
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    h0rtl4kk
    h0rtl4kk's avatar
    Kayıt Tarihi: 10/Şubat/2014
    Erkek
    DuPi bunu yazdı

    Veri tabanı sunucunda crontab yap 10 dk boyunca ben burdayım demeyeni oflline yap c# tan 9dk da bir ben burdayım de

     

    Kişi oyundayken interneti koparsa ve oyunu kapatırsa online olarak gözükecek. Oyunu kapattığı için siteye veri gönderemez. C#'dan Php'ye değilde Php'den C#'a veri göndermenin kontrol etmenin bir yolu yokmudur ?

  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    DuPi
    DuPi's avatar
    Kayıt Tarihi: 21/Ağustos/2005
    Erkek

    O zaman şöyle söylim.

    c# > kullanıcı online olduğunu 07.01.2016 21:12:15 te bildirdi.(bu zaman ve saat db ye kaydedildi!)

    sunucuda crontab(belirli zamanlarda otomatik kontrol) işini yapan script 21:15:00'da çalıştı ve db deki online kullanıcıları kontrol etti. 3 dk önce giriş yapan x kullanıcısı için problem yoktu

    ama X kullanıcısının şarjı bitti 10 dklık süre zarfında kendini ben hala burdayım diyerek ifade etmedi(ilk girişteki gibi 10dk da 1 kez burdayım desin) 

    21:25:00 da yapılan crontab kontrolünde son bildirimi 13dk önce olan X kullanıcısı artık online değil diye güncellensin ?

    daha detaylı nasıl anlatırım bilmiyorum. 


    Ne zaman birşey öğrenmek istesem, Birden Vaktim Kalmıyor ?
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    aercys
    aercys's avatar
    Kayıt Tarihi: 12/Nisan/2008
    Erkek

    Hocam c# bilgim yok ancak, c ile socket kullanarak yapabilirsin gibime geliyor.

    Sunucu tarafında bir tane server programın olur ve bağlantı bekler, yeni bir bağlantı geldiğinde tüm kullanıcılara online olan kullanıcıların listesini broadcast edersin.

    Eğer kullanıcılardan herhangi biri koparsa, yine xx adlı kullanıcı oyunu terk etti gibi tüm kullanıcılara broadcast edersin.

    Edit: Veritabanı işlemleri içinde yine giriş/çıkış yapan kullanıcıların id'sini php tarafına post edersin, bu şekilde cron tab olayını da aşmış olursun.

    aercys tarafından 07/Oca/17 21:31 tarihinde düzenlenmiştir

    0x62 0x75 0x6e 0x75 0x20 0x79 0x61 0x7a 0x61 0x6e 0x20 0x74 0x6f 0x73 0x75 0x6e 0x2c 0x20 0x6f 0x6b 0x75 0x79 0x61 0x6e 0x61 0x20 0x6b 0x6f 0x73 0x75 0x6e
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    MhmdAlmz
    MhmdAlmz's avatar
    Kayıt Tarihi: 09/Ağustos/2015
    Erkek

    Hocam Apıler tek yönlü socket çift yönlü.

    APILer de Server'dan Client'e data push edemezsin... Fakat Socket'ile çift yönlü veri olduğu için Client Server arasında hertürlü haberleşme var....

    Bahsettiğiniz gibi 10 dakikada bir ben burdayım ben burdayım demesi saçma. Niye saçma . Her 10 dk da bir VT güncelleyeceksin diyelim 10.000 kullanıcı var her 10 dk da bir 10.000 beleşten Sorgu mu yazcan ?

    Peki ya zamanı hassaslaştırdığını düşün ? 1 DK olsa ? Ne gerek var

    PHP-> https://github.com/nekudo/php-websocket

    C# -> https://github.com/sta/websocket-sharp

    C -> https://github.com/payden/libwebsock 


    Andolsun kuşluk vaktine ve dindiği zaman o geceye ki, Rabbin sana veda etmedi ve darılmadı! Ve kesinlikle senin için sonu önünden (ahiret dünyadan) daha hayırlıdır. ileride Rabbin sana verecek de hoşnut olacaksın! O, seni bir yetim iken barındırmadı mı? Seni, yol bilmez iken (doğru) yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? Öyle ise, sakın yetime kahretme (onu horlama)! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    end
    end's avatar
    Kayıt Tarihi: 16/Ekim/2016
    Erkek
    MhmdAlmz bunu yazdı

    Hocam Apıler tek yönlü socket çift yönlü.

    APILer de Server'dan Client'e data push edemezsin... Fakat Socket'ile çift yönlü veri olduğu için Client Server arasında hertürlü haberleşme var....

    Bahsettiğiniz gibi 10 dakikada bir ben burdayım ben burdayım demesi saçma. Niye saçma . Her 10 dk da bir VT güncelleyeceksin diyelim 10.000 kullanıcı var her 10 dk da bir 10.000 beleşten Sorgu mu yazcan ?

    Peki ya zamanı hassaslaştırdığını düşün ? 1 DK olsa ? Ne gerek var

    PHP-> https://github.com/nekudo/php-websocket

    C# -> https://github.com/sta/websocket-sharp

    C -> https://github.com/payden/libwebsock 

    zihin okuyorsunuz zihiiiinnn


    0x0480 takilin madem ﷽﷽﷽
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    h0rtl4kk
    h0rtl4kk's avatar
    Kayıt Tarihi: 10/Şubat/2014
    Erkek

    Yorumlarınız için teşekkürler. Oyun şuanda yayında olduğu için socket kullanımını malesef yapamam. Şuan için çalışıyor bir sıkıntı yok fakat internet giderse ve oyunu kapatıp silerse farkedilmediği sürece online olarak gözükecekti. Bu şekilde kalsın bakalım ilerleyen zamanlarda elbet bir yol buluruz.

    @DuPi tavsiyen için teşekkürler. Farklı bir yöntem vardır diye düşündüm veritabanına bir sütun daha eklemek istemiyorum açıkcası :)

  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    end
    end's avatar
    Kayıt Tarihi: 16/Ekim/2016
    Erkek
    h0rtl4kk bunu yazdı

    Yorumlarınız için teşekkürler. Oyun şuanda yayında olduğu için socket kullanımını malesef yapamam. Şuan için çalışıyor bir sıkıntı yok fakat internet giderse ve oyunu kapatıp silerse farkedilmediği sürece online olarak gözükecekti. Bu şekilde kalsın bakalım ilerleyen zamanlarda elbet bir yol buluruz.

    @DuPi tavsiyen için teşekkürler. Farklı bir yöntem vardır diye düşündüm veritabanına bir sütun daha eklemek istemiyorum açıkcası :)

    bu tür verileri tek bir sütunda json formatı ile tutabilirsin hocam.

    nickname, last_activate, level, exp, coins, gems


    0x0480 takilin madem ﷽﷽﷽
  10. KısayolKısayol reportŞikayet pmÖzel Mesaj
    DuPi
    DuPi's avatar
    Kayıt Tarihi: 21/Ağustos/2005
    Erkek

    ya en basit yöntem bu,

    @MhmdAlmz socket kullanması en doğrusu ama bu şekilde istediğine göre böyle cevap verdim. ama senin söylediğin ws(websocket) olayını anlamadığını varsayıyorum. çünkü en stabili o olur.


    Ne zaman birşey öğrenmek istesem, Birden Vaktim Kalmıyor ?
  11. KısayolKısayol reportŞikayet pmÖzel Mesaj
    MhmdAlmz
    MhmdAlmz's avatar
    Kayıt Tarihi: 09/Ağustos/2015
    Erkek
    DuPi bunu yazdı

    ya en basit yöntem bu,

    @MhmdAlmz socket kullanması en doğrusu ama bu şekilde istediğine göre böyle cevap verdim. ama senin söylediğin ws(websocket) olayını anlamadığını varsayıyorum. çünkü en stabili o olur.

    Sen zaten yapması gerekeni söylemişsin bende yapmasını istediğimi söyledim :/ 

    Şöyle birşey daha geldi aklıma ;

    hocam şunu yap yazdığın program hangi dilde bilmiyorum ama 

    1 Adet Class oluştur

    String Nickname

    String Password

    .

    .

    Time LastActiveTime;

    Bu oluşturduğun class ile bir Linked List oluştur. 

    Bir Döngü içerisinde (Thread yaparsan daha mantıklı kanımca) (LastActiveTime-DateTime.Now()).minute==-15 Yani adam 15 dakika boyunca bişey yapmadı ise bu adam Aktif değildir diyeceksin ve Veritabanına yük değil de server'ına yük binmiş olacak. Bu daha mantıklı gibi... Genede Sen bilirsin :)


    Andolsun kuşluk vaktine ve dindiği zaman o geceye ki, Rabbin sana veda etmedi ve darılmadı! Ve kesinlikle senin için sonu önünden (ahiret dünyadan) daha hayırlıdır. ileride Rabbin sana verecek de hoşnut olacaksın! O, seni bir yetim iken barındırmadı mı? Seni, yol bilmez iken (doğru) yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? Öyle ise, sakın yetime kahretme (onu horlama)! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!
Toplam Hit: 1246 Toplam Mesaj: 11
unity3d unity kontrol kullanıcı unity kullanıcı kontrol