• 30-06-2014, 15:31:06
    #1
    Merhaba

    Konunun aslında direk olarak php ile ilgisi yok ancak web üzerine programlamada en bilgili kişiler burada olduğu için direk buradan sormak istedim.

    Benim chat sitem var,mesajlar soket üzerinden gidiyor yani kayıt etmiyorum.Ancak spam sorunlarına karşı önlem için kayıt etmek istiyorum nasıl bir çözüm bulunabilir sizce ? Mongodb falan mı kullansam sorgu olmayacak ama her mesaj veritabanına kaydedilecek.Site oldukça yoğun bu işlemin yavaşlatmaması gerekiyor veritabanının şişmemesi gerekiyor vs.

    Çözüm için tavsiyeleriniz nedir ?
  • 01-07-2014, 11:49:57
    #2
    Spam türü nedir? Flood mesajı engellemek istiyorsanız böyle bir yönteme ihtiyacınız yok, ya da küfür içeriği vb. şeyler midir istediğiniz engelleme? Herhangi bir kayıt almadan da çözülebilecek bir durumdur diye düşünüyorum.
  • 01-07-2014, 11:52:48
    #3
    Üyeliği durduruldu
    kullanıcı mesaj attığında ona ait socket nesnesine lastMessage şeklinde bir property ekleyin.

    bir sonraki mesajında bu property ile şimdiki zamanı karşılaştırın ve aradan geçen süre çok kısaysa mesajı göndermesine izin vermeyin, değilse mesajı gönderin ve lastMessage property'sini düzenleyin, bu işlem için veritabanına ihtiyacınız yok



    ki ilerde mesajları veritabanına bile kaydetsen, scaling yapacağın bir uygulamada online kişilerin son mesaj tarihini redis ile in-memory tutman senin çok daha işine gelecektir.


    kolay gelsin, iyi günler
  • 03-07-2014, 01:41:28
    #4
    bayGaReZ adlı üyeden alıntı: mesajı görüntüle
    Spam türü nedir? Flood mesajı engellemek istiyorsanız böyle bir yönteme ihtiyacınız yok, ya da küfür içeriği vb. şeyler midir istediğiniz engelleme? Herhangi bir kayıt almadan da çözülebilecek bir durumdur diye düşünüyorum.
    Altta açıkladım,sizin düşünceniz nedir ?

    BTHN adlı üyeden alıntı: mesajı görüntüle
    kullanıcı mesaj attığında ona ait socket nesnesine lastMessage şeklinde bir property ekleyin.

    bir sonraki mesajında bu property ile şimdiki zamanı karşılaştırın ve aradan geçen süre çok kısaysa mesajı göndermesine izin vermeyin, değilse mesajı gönderin ve lastMessage property'sini düzenleyin, bu işlem için veritabanına ihtiyacınız yok



    ki ilerde mesajları veritabanına bile kaydetsen, scaling yapacağın bir uygulamada online kişilerin son mesaj tarihini redis ile in-memory tutman senin çok daha işine gelecektir.


    kolay gelsin, iyi günler
    Ama sizin dediğinize göre client bazlı bir bloklama olmaz mı ? Yani 1000 kişiye ben spam mesaj attım diyelim 1 tane ama flood değil yani.Bu bloklanmamış olacak ben bunun önüne geçmek istiyorum toplu mesajın yani.