• 18-08-2019, 17:13:24
    #1
    Merhaba arkadaşlar,

    Kullanıcının sitedeki hareketlerini veritabanına yazdırmak istiyorum örnek x, y ve z haberlerini okudu a köşe yazısını okudu gibi. Bu bilgileri kullanıcının panelinde listeleyeceğim bu zamana kadar şu haberleri okudunuz şu köşe yazarlarını okudunuz diye. mantığı bir türlü kuramadım. Vakti olan bir arkadaş kısa bir örnek verebilirmi veritabanında nasıl kayıt altında tutabilirim bu bilgileri fazla dolandırmadan işi.
  • 18-08-2019, 17:17:24
    #2
    Gold üye
    Haber ve köşe yazısı sayfasına insert kodu eklemeniz yeterlidir.

    örnek: $username , $haber_adini okudu. Zaman: $time gibi.

    Mantık bu şekilde.
  • 18-08-2019, 17:20:14
    #3
    Platin üye
    users_activities
    uid, activite, url, read_date

    diye bir tablo oluşturdunuz diyelim.
    haber okunan php sayfasına kullanıcı girdiğinde tabloya;
    uid = kullanıcı id,
    activite = read,
    url = sayfa adresi, (url yerine post_id vs. alıp, daha sonra join işlemiyle oradan da verileri bütünleyebilirsiniz. )
    read_date = okuma zamanı,

    olarak kayıt ettirirsiniz.
    Daha sonra da bu kayıtları istediğiniz yerde kullanırsınız.
  • 18-08-2019, 17:22:12
    #4
    Ayrı bir tablo oluşturacaksanız. Örnek veriyorum log. Logları tutmak istediğiniz sayfalar örnek ; haber diyelim.,

    haber içeriğine girince log tablosuna haber_id,kullanıcı_adi, tarih ve saat sütünlarına insert edeceksiniz. Daha sonra raporlamada bunu görünteleyeceksiniz. Şu tarihte şu haberi okudunuz diye mantık bu şekilde en sağlıklısı bunu bütün sayfalar için yaparsanız istediğiniz verileri elde etmiş olacaksanız.
  • 18-08-2019, 17:27:53
    #5
    ilginiz için teşekkür ederim hepiniz aynı yolu önerdiniz

    uye_hareketler

    diye tablo açıp haberin veya köşe yazarın id sini üyenin id sini tarihle birlikte bu tabloya yazdıracağım peki şu geliyor aklıma sitede var 5000 haber ve 1000 köşe yazısı veya diğer sayfalar vs.

    uye_hareketler diye tabloda bu kadar alan açılacak ki sadece 1 üye için bunca yer açılacak sitede 50.000 üye olduğunu var sayarsak bu tablo şişmez mi yani sorun çıkarmaz mı
  • 18-08-2019, 17:39:13
    #6
    Platin üye
    site için kullandığınız hosting / dc çok kötü değilse sıkıntı olacağını düşünmüyorum.
    Kullanıcı ID'yi ve tarihi de indexlersiniz böylece sorgu esnasında hız problemi de yaşamazsınız.
  • 18-08-2019, 17:45:04
    #7
    - Tabloda string herhangi bir veri tutmamaya çalışın. Sorgudan gelen verileri siz anlamlı bir ifadeye çevirirsiniz.
    - Partition kullanın.
    - Mysql sorgunuzu iyi optimize edin, indexleri atlamayın.
    - View kullanın, direk tabloyu sorgulamayın.
    - Ciddi bir trafiğiniz varsa Elasticsearch/Mongodb ikilisini kullanmayı deneyin.

    MySQL'de bulunan bir log tabloma günlük 700bin satır veri girişi oluyor, Bir yıllık veriyi siz tahmin edin. Sorunsuz çalışıyor.

    SNDizayn adlı üyeden alıntı: mesajı görüntüle
    ilginiz için teşekkür ederim hepiniz aynı yolu önerdiniz

    uye_hareketler

    diye tablo açıp haberin veya köşe yazarın id sini üyenin id sini tarihle birlikte bu tabloya yazdıracağım peki şu geliyor aklıma sitede var 5000 haber ve 1000 köşe yazısı veya diğer sayfalar vs.

    uye_hareketler diye tabloda bu kadar alan açılacak ki sadece 1 üye için bunca yer açılacak sitede 50.000 üye olduğunu var sayarsak bu tablo şişmez mi yani sorun çıkarmaz mı
  • 18-08-2019, 17:45:32
    #8
    tamam hocam ilginiz için teşekkür ederim bu mantık üzerinden yapacağım.
  • 18-08-2019, 19:33:52
    #9
    Böyle bir çalışma yapıyor olsam, her kullanıcıya bir session açar ve Session ID ataması yapardım. Oluşturduğum log tablosunda session_id ve data adında iki sütun oluşturup, data sütununun data-type'ını LONGTEXT yaparım. JSON olarak verileri burada saklayabilirim. Verilerde her hareketi unixtime olarak append etmek mantıklı. İlerleyen zamanlarda, unixtime'ı rahat çevirip, datayı işleyebilirsiniz. Böylelikle satır sayısında çok fazla düşme gerçekleşebilir.