Global.asax ile Online Ziyaretci Sayacı-1

15 Nisan 2012
Posted by Çağatay Yıldız
3329 Views

Bloğumuzdaki bu makalede global.asax dosyasını kullanarak sitemizde bulunan anlık online ziyaretçi sayısını ekrana yazdıracağız. Sonra yayınlayacağımız diğer makalede ise global.asax dosyası kullanarak günlük aylık ve yıllık ziyaretçi verilerini tutan ve bunları bir veritabanında saklayan bir sayaç yapacağız.

Global.asax dosyasının projeye eklenmesinden ve özelliklerinden ilk makalemizde bahsetmiştik(http://cagatayyildiz.com/global-asax-nedir/)

Öncelike uygulama IIS den ilk çağrıldığında bir string tanımlayıp o stringe bir object atıyoruz.OnlineUsers isimli değişkenimize 0 atıyoruz

protected void Application_Start(object sender, EventArgs e)
{
 Application.Add("OnlineUsers", 0);
 }

Şimdi kullanıcı oturum açtığında mevcut değişkenimizi 1 arttırıyoruz. Aşağıdaki kod bloğunda  dilerseniz kullanıcının sitede kalma süresine bağlı olarak oturumu timeout metodu ile kapatabilirsiniz. Application değerinin aynı anda değişmesini engellemek için Application.Lock metodunu kullanıyoruz ve işlem bittikten sonra tekrar UnLock metodu ile devam ediyoruz.

protected void Session_Start(object sender, EventArgs e)
 {
 Application.Lock();
 Application["OnlineUsers"] = Convert.ToInt32(Application["OnlineUsers"]) + 1;
 Application.UnLock();
 }

Kullanıcının siteden çıkması durumunda “OnlineUsers” değişkenimizi bir azaltıp devam ediyoruz


protected void Session_End(object sender, EventArgs e)
 {
 Application.Lock();
 Application["OnlineUsers"] = Convert.ToInt32(Application["OnlineUsers"]) - 1;
 Application.UnLock();
 }

ve son olarak oluşturduğumuz nesneyi serverda remove ediyoruz


protected void Application_End(object sender, EventArgs e)
 {
 Application.Remove("OnlineUsers");
 }

İşlemimiz bursa ona ermekte. Sitede dilediğiniz yerde Application[“OnlineUsers”] ı tanımlayıp(string bir değer dönecektir) entegre edebilirsiniz ve kullanıcı sayınızı görebilirsiniz.

Görüldüğü üzere çok az bir kodla sitemizde o an bulunan online kullanıcı sayısını görmüş olduk. Daha sonra bu konuyla ilgili uygulamalarımızda bu kullanıcıların oturum süreleri ıp adresleri vb. bilgilerini veritabanına yazdırıp online kullanıcı analizini görebileceğimiz geniş bir panel yapacağız.