Duyuruyu Kapat
Facebook Gözat
Twitter Gözat

sitedeki login kişi sayısı

Konu, 'PHP' kısmında digrev tarafından paylaşıldı.

  1. digrev

    digrev Üye

    Kayıt:
    7 Şubat 2012
    Mesajlar:
    152
    Beğenilen Mesajlar:
    0
    Arkadaşlar sessionları öğreniyorum merak ettiğim diyelimki ben chrome ile login oldum sonra firefoxla login oldum sitede iki tane session oluyor değilmi benim sitede kaç kişi olduğunu gösterebilmem için nasıl bir yapı lazım veritabanı nasıl olmalı.
     
  2. EgoistDeveloper

    EgoistDeveloper Yeni Üye

    Kayıt:
    1 Mart 2019
    Mesajlar:
    5
    Beğenilen Mesajlar:
    0
    Şehir:
    İstanbul
    Dediğin gibi iki farklı tarayıcıdan giriş yaptığında yeni bir session oluşturulur. Online sayısını almak için bu session dosyalarının sayısını kullanmak iyi bir fikir olmaz çünkü dediğin gibi aynı kişi farklı cihazdan giriş yapmış, dublicated sayımlar gerçeği yansıtmayacaktır. Users tablosunda yeni bir sütun daha oluşturup last_activity adını verelim, session'da da last_activity adında bir key oluşturup tarihi yazdıralım. Her sayfa yenileme veya XHR (AJAX vs) gibi işlemlerde bu değeri şuanki tarihle karşılaştırıp istediğimiz aralıktan (online sayımı için 5-10dk tolerans tanınabilir) büyük ise şuanki tarihi yazdıralım ve bu esnada yeni tarihimizi veritabanına da kullanıcının last_activity'sine ekleyelim.

    Şimdi ise son aktif olan kullanıcıları listelemek için WHERE koşuluna şuanki tarih + 5-10dk ekleyip sorguyu çalıştırdığında son aktif olan kişileri listeleyebileceksin. Bu mantık son aktif olan kişilere yönelik bir yaklaşımdı ve saf PHP ile sunucu yükünü çok arttırmadanbu veriye erişmek kolay değil.

    Eğer anlık online sayısı çok önemli ise socket.io veya node.js kullanman gerekecek, ki bu ikiside sistemini yeniden yazmana/kurgulamana neden olabilir.

    Uyarı: PHP'de session'ı öğrneme amaçlı kullanmanda sorun yok ama gerçek haytta aşırı yük için uygun değil, dosya bazlı oturum yönetimi zaten baştan performans sorunu demek. Buun yerine JWT gibi çözümlere göz atmanda fayda var.
    Uyarı 2: XHR (AJAX vs) aracılığı ile sunucuya saniyelik aralıklarla istek yapıp online sayısını bu şekilde almayı planlıyorsan hem session'la iyi bir kombo olmaz hem de bildiğin patates bir sistem ortaya çıkar. Performans açısından iyi bir yol değil.
    Uyarı 3: Session dosya bazlı çalışır, paylaşımlı hostinglerde inode sayısını aşman durumunda suspend yemen olasıdır çünkü session'a her eriştiğinde dosya okuma ve yazma gibi işlemler yaptırıyorsun.