sponsor adobe istanbul
Hatırlatma: MMIstanbul, hem tasarımcılar hem de programcılar içindir. MMIstanbul'u arkadaşlarınıza tavsiye edebilirsiniz.

İçeriğin rss beslemesi kullanımda değil Soru - Cevap Bölümü / Kategori: Programlama

20/05/2005 - 08:11:07 cevap (4) Okunma : 8279 Bu yazıyı 0 kişi tuttu.

Reload ve Refresh ile online kullanıcı sayısı hesaplama

merhaba, çerçevelerden birindeki bir sayfaya aktif ziyaretçi sayısını gösteren bir kod bloğu ekledim. ancak bu kodlar ziyaretçiye, girdiği andan sonraki girişleri göstermiyor. Kod bloğunu başka bir sayfa olarak kaydettim ve ilgili sayfaya 15 saniyede bir tazeleme için şu kodu ekledim:

<InvalidTag http-equiv='refresh' content='15'>

istediğim şey oldu fakat istemediğim bir şey daha oldu. ilgili sayfadaki reload işlemi kendisini çağıran sayfayı da yeniden yükledi. dolayısıyla aynı çerçevede bulunan sayaç da bu durumdsn etkilendi. yani, ziyaretçi sayısı da her tazelemede artmaya başladı.

kısaca sayfadaki başka değişkenleri etkilemeden aktif ziyaretçi sayısını belli aralıklarla (örneğin 30 saniyede bir) göstermenin bir yolunu öğrenmek istiyorum.

bir de yukarıdaki kodala yapılan tazeleme işlemininin yerine belli aralıklarla bir değişkenin değerini kontrol imkanı var mı acaba?

ilginiz için şimdiden teşekkürler

adres mdemirci01 profilini göster
Murat Demirci 21.05.2005 04:11:03
En iyi cevap mı ?

Kullandığınız yöntem gayet mantıklı. Başka yöntemlerde var, fakat onlara geçmeden tuhaf olan asıl noktaya değinmekte yarar var.

Bir çerçevenin 15 saniye de bir yenilenmesi normalde ziyaretçi sayısını artırmaz. Sizde artış olması iki nedenden kaynaklanıyor olabilir:

1. Ziyaretçi sayısını yanlış saydırıyor olabilirsiniz. 2. Session timeout’larıyla ilgili bir problem olabilir 3. Cookie’lerle ilgili bir problem olabilir.

Bu hususları kontrol etmenizde fayda var.

Ziyaretçi sayısını saydırmak için öncelikle Coldfusion 7’deki Application.cfc özelliğinden yararlanmanızı tavsiye ederim. Application.cfc içerisinde kullanabileceğiniz onSessionStart ve onSessionEnd metotları her ziyaretçi/oturum açıldığında ve kapandığında otomatik olarak çalışırlar. Bu özellikten yararlanarak "application" skobundaki ziyaretciSayisi adındaki bir değişkeni artırıp azaltarak aktif ziyaretçi sayısını öğrenebilirsiniz. Şimdiye kadarki toplam ziyaretçi sayısını öğrenmek için ise "application" skobun’daki bir değişkeni her oturum açıldığında arttırsınız, oturum kapandığında ise azaltMAzsınız.

Sanırım siz toplam ziyaretçi sayacı yapmak istiyorsunuz. Bunun için Application.cfc’ye de gerek yok. Application.cfm ile de rahatlıkla yapılır:


<cflock scope='application' type='exclusive' timeout='20'>
  <!--- ColdFusion ilk defa çalışıyorsa son sayaç değerini veritabanından alarak başla --->
  <cfif not structKeyExists(application,'ziyaretciSayaci')>
       <cfquery name='sayac' datasource='dsn'>
       select GENEL_SAYAC from ISTATISTIK
       where KAYIT_NO = 1
       </cfquery>
       <cfset application.ziyaretciSayaci = sayac.GENEL_SAYAC />
   </cfif>

  <!--- Bu oturum yeniyse sayaci bir artır --->
  <cfif not structKeyExists(session, 'sayildiMi')>
     <cfset session.sayildiMi = true />
     <cfset application.ziyaretciSayaci = application.ziyaretciSayaci + 1 />
  </cfif>

  <!--- ziyaretçi sayacımızı belli aralıklarla kalıcı olarak kaydetmeliyiz, aksi taktirde sunucu restart olduğunda tüm sayaç değerini kaybedebiliriz! : --->
  <cfif application.ziyaretciSayaci mod 15 eq 0>
     <cfquery datasource='dsn'>
       update ISTATISTIK
             set GENEL_SAYAC = <cfqueryparam cfsqltype='decimal' value='#application.ziyaretciSayaci# />
       where KAYIT_NO = 1
   </cfif>

</cflock>

Kodu test etmediğim için hatalar olabilir, genel fikir vermesi için yazdım. Bu kodu kullanırsanız sayım doğru yapılacaktır. Ancak önce sessionManagement’ı aktif etmelisiniz (bilmeyenler için: <cfapplication> etiketini inceleyin.)

Sayacımızı hallettik. Sonrasında sizin yaptığınız gibi bir frame içerisinde değeri görüntüleyebiliriz. Bunu yapmak için sayac.cfm diye bir .cfm şablonu oluşturup içerisinde:


<cflock scope='application' type='readonly' timeout='10'>
<cfoutput>#application.ziyaretciSayaci#</cfoutput>
</cflock>

kodunu yazmamız yeterli. Sonra da sayfa içerisinde sizin kullandığınız meta etiketini kullanıyoruz, böylece sayfanın son sayaç durumunu görüntülemesini sağlıyoruz.

Bu kadar uzun bir yazıyı konunun bir çok kişi tarafından ilgi duyulan bir konu olması sebebiyle yazdım.

Gelelim sayfa yenileme problemine. Eğer her 15 saniyede bir yeni değerin sayfada ya da frame’de görüntülenmesini istiyorsanız meta etiketi yerine AJAX adı verilen JavaScript yöntemini incelemenizde yarar var. (Bilgi için AJAX JavaScript kelimelerini google’da aratın.) Ayrıca JavaScript’te yazdığınız fonksiyonun periyodik olarak otomatikman çalıştırılmasını sağlayabiliyorsunuz. Böylece frame’i yenileyen bir fonksiyon yazıp, bunu zamanlayarak hiç AJAX olayına girmeden sorunu çözebilirsiniz. (Bilgi için SetTimeOut JavaScript kelimelerini google’da aratabilirsiniz)

iyi çalışmalar,

adres metoikos profilini göster
Yılmaz Uğurlu 24.05.2005 05:42:47
En iyi cevap mı ?

Bu olaya paralel olduğunu düşündüğüm bir soru sormak istiyorum. Oturum açma ile ilgili.

Kullanıcı kullanıcı adı ve şifresi ile bir bilgisayarda oturum açtığında, aynı kullanıcı adı ve şifre ile başka bir bilgisayarda oturum açmasını nasıl engelleyebiliriz.

Ya da bir önceki nin kapanmasını nasıl sağlayabilriz. Bir çok çözüm düşündüm ancak Application faaliyet alanının doğasını tam olarak çözememem nedeniyle başarısız oldum. iyi çalışmalar.

Not: ColdFusion üzerinde Ajax ile çalışmak için bir kaynak http://www.indiankey.com/cfajax/.

adres mdemirci01 profilini göster
Murat Demirci 24.05.2005 23:54:29
En iyi cevap mı ?
Bu olaya paralel olduğunu düşündüğüm bir soru sormak istiyorum. Oturum açma ile ilgili. Kullanıcı kullanıcı adı ve şifresi ile bir bilgisayarda oturum açtığında, aynı kullanıcı adı ve şifre ile başka bir bilgisayarda oturum açmasını nasıl engelleyebiliriz. Yada bir önceki nin kapanmasını nasıl sağlayabilriz. Bir çok çözüm düşündüm ancak Application faaliyet alanının doğasını tam olarak çözememem nedeniyle başarısız oldum. iyi çalışmalar.

Bu ayrı bir konu, cevabı da biraz uzun. Yeni bir forum açmanızda yarar var.

aç-kapa Bu Yazıyı Tutanlar

bu yazıyı tutan kimse yok.

yeni üyelik | şifremi unuttum

aç-kapa Konferans 2. Ulusal Yazılım Mimarisi Konferansı - UYMK'08

2. Ulusal Yazılım Mimarisi Konferansı - UYMK'08

2.Ulusal Yazılım Mimarisi Konferansı (UYMK’08), 11 – 12 Eylül 2008 tarihlerinde Ege Üniversitesi Bilgisayar Mühendisliği Bölümü ev sah...
Kategori: Konferans

aç-kapa Sergi İstanbul'da Bir Sürrealist: Salvador Dali

İstanbul'da Bir Sürrealist: Salvador Dali

Picasso ve Rodin’den sonra kimi görmek istersiniz deseler; Salvador Dali listenin ilk başlarında yer almaz mı? Ressam, yazar, bilim adamı, tasar...
Kategori: Sergi

aç-kapa Yarışma İnteraktif Pazarlama Zirvesi ve Grand Interactive Awards

İnteraktif Pazarlama Zirvesi ve Grand Interactive Awards

Türkiye’nin interaktif pazarlama projelerini değerlendiren ilk ve tek yarışması Grand Interactive Awards (GIA) için başvurular 15 Ağustos tarihi...
Kategori: Yarışma

aç-kapa Fuar CeBIT 2008 Bilişim Eurasia 7 - 12 Ekim 2008' de

CeBIT 2008 Bilişim Eurasia 7 - 12 Ekim 2008' de

CeBIT Bilişim Eurasia bu yıl 7 – 12 Ekim tarihlerinde düzenleniyor Adını dünyanın en büyük on fuarı arasına yazdırarak, İstanbul’u Avrasy...
Kategori: Fuar

aç-kapa Sempozyum Yazılım Kalitesi ve Yazılım Geliştirme Araçları Sempozyumu 2008 (YKGS 2008)

Yazılım Kalitesi ve Yazılım Geliştirme Araçları Sempozyumu 2008 (YKGS 2008)

Yazılım Kalitesi ve Yazılım Geliştirme Araçları Sempozyumu 2008 (YKGS 2008), yazılım mühendisliği alanında; kalite deneyimlerini, çözümlerini, yazılım...
Kategori: Sempozyum

üyeler Üyelerimizden...

MMIstanbul Adobe UG MMIstanbul Adobe UG

adobe user group

ColdFusion, Flex, AIR, Flash , PDF, Dreamweaver, Fireworks, Photoshop, Illustrator, INdesign, Connect, Premiere, Soundbooth, Contribute, Lightroom, InCopy, JRun, LiveCycle, Acrobat, AfteEffects, Resmi Adobe Kullanıcı Grubu.

stats Kimler Burada? web stats

Son 1 dakika içinde MMIstanbul' da 230 (2 kayıtlı, 228 ziyaretçi) kullanıcı varmış. Login durumda olanlar aşağıda:

coldfusion mysql ubuntu
 
sponsor adobe istanbul