PHP açma / kapatma tasarım soru

3 Cevap php

Kullanıcıların / kapatma kez oturum açma izlemek ve ayrıca şu anda oturum açmış kim takip edecek küçük bir izleme sisteminin uygulanması düşünüyorum. Her bir kullanıcı oturumu kapattığında takibi dışında bana mantıklı. Onun kullanıcı oturum kapatma zaman veritabanını güncellemek ama ne eğer kullanıcı sadece tarayıcı dışarı çıkar bir işlevi çağıran bir "kapalı oturum" butonuna tıkladığında yeterince kolaydır. Nasıl bu olayı işleyecek bir işlev oluşturmak ve ben bir kullanıcı bir php uygulamayı gayrı yol çıktığında düşünce değil başka durumları tahmin edebilirsiniz. Ayrıca, bu konuda çevrimiçi öğreticiler için herhangi bir bağlantıları çok duyacağız.

3 Cevap

Zaten bunu biliyorum - basit çözüm sadece "aktif" olarak bir kullanıcı o sitenize (ie, each time a page is generated on the server) üzerinde bir eylem yapar, her zaman işaretlemek için muhtemelen.

Ve bir kullanıcı, "aktif" gibi uzun bir süre (ie, more than 5 minutes, for instance ; maybe more depending on the kind of content you have on your site) önce, o artık aktif değildir düşünebilirsiniz işaretlenmiş ise - belki bile sitenizde artık aslında.

Tabii ki, bir kullanıcı tespit önce gecikme birkaç dakika artık yok yok ...


A possible complementary solution would be to use some kind of Ajax request done once every one or two minutes : this way, you have a shorter delay before detecting a user is not here anymore...

Ancak, bu çözüm ile: o bir tarayıcı penceresi / sekmesi sitenizdeki açtı eğer bir kullanıcı aktif olarak düşünün - o gerçekten (I always have lots of tabs opened in my firefox, some on websites I don't actually use for hours / days !) kullanıyor olsa dahi

Eğer pencere unload olayı üzerine (AJAX) PHP işlevini çağırmak ya da sadece örneğin sonra kullanıcı oturum açmak için Javascript kullanabilirsiniz Otomatik olarak hareketsizlik 30 dakika.

Siz kullanıcı tarayıcısı ya da sayfayı kapatır zaman takip etmek mümkün olmayacaktır.

Ben izleme kullanıcı kapanış sayfa hakkında sormak için çalışmışlardır Ne: http://stackoverflow.com/questions/1619946/ajax-when-user-leaves-page-good-or-bad-practice-implementation

Anlaşılan o before_unload olayı veri göndermek için bu iyi değil.

Peki ne yapabilirim kullanıcıların zaman belirli miktarda hareketsizlik sonra çıkışım ediliyor ele almaktır.

Kullanıcıların bir sayfaya gittiğinde her zaman, zaman damgası saklayın. Bir kullanıcı damgası örneğin 5 dakikadan fazla eski ise çevrimdışı olduğu söyleniyor. Siz veritabanı veya oturumuna damgası saklayabilirsiniz.

Daha doğru olması için isterseniz Alternatif olarak, etkinlik damgası uzatmak için geri sunucuya AJAX-ly her zaman aralığı (30 saniye diyelim) çağırabilirsiniz.