Merhaba arkadaşlar şöyle bir senaryo var. Bir kullanıcının kendi paneline her giriş yaptığında giriş ve çıkış zamanları log olarak tutuluyor. Bir kullanıcı günde en az bir kere giriş yaptığı için 1 den fazla db'de kaydı oluyor. Ben bu kullanıcıların o anda online olup olmadıklarını php ile çıkış zamanlarına göre listeleyerek bulabiliyorum. Ancak online olmayanları listelemek istiyorum. php ile bunu çözüyorum fakat veri yoğunluğu sebebiyle sorgu çalışma süresi uzuyor buda sayfanın geç cevap vermesine sebep oluyor.
Bunu nasıl çözebilirim. View kullanmayı denedim ancak sql kodunu yazamadım. Bu konuda yardımcı olabilecek arkadaşlar var mı? Çözüm için ne tavsiye edersiniz.
Uzun süren sql sorgusu
4
●84
- 24-03-2021, 14:10:32TXT'ye tüm username'lerini yaz, online olanları ayıkla ve sun hocamemrahakin adlı üyeden alıntı: mesajı görüntüle
- 24-03-2021, 14:18:16Teşekkür ederim hocam deneyeceğim. Başka önerisi olan var ise yazabilir başka sorun yaşayan arkadaşların da işine yarar.yalinyalniz adlı üyeden alıntı: mesajı görüntüle
- 25-03-2021, 02:08:26@per; 'in söylediği yöntemin daha profesyonel olacağını düşünüyorum.emrahakin adlı üyeden alıntı: mesajı görüntüle
users tablosunda last_login_date vb. bir alan tutup kullanıcı sitede gezdiği her sayfada bu alanı güncel datetime ile update edebilirsiniz. Yani her sayfada aşağıdaki tarzda bir update sorgusu çalışmalı.
Update users Set last_login_date=NOW() Where user_id='XXX'
Sonrasında ise belli bir süre belirlersiniz örneğin 1 saat hiç bir aktivitesi olmayan kullanıcılar offline gibi ve aşağıdaki gibi bir sorguyla son 1 saatte işlem yapmayan yani offline olan kullanıcıları çekebilirsiniz.
Select id, username From users Where last_login_date <= DATE_SUB(NOW(), INTERVAL 1 HOUR);
Eğer amacınız o gün hiç giriş yapmayanları göstermekse o zamanda aşağıdaki gibi bir sorgu işinizi görebilir.
Select id, username From users Where DATE(last_login_date) < DATE(NOW());
Dipnot: last_login_date fieldi datetime türünde olmalıdır.