Veritabanımdaki bir tablonun sütunundaki basamak 5'er dk'a ara ile 1'er 1'er artacak...
Böyle bir fonksiyon asp ile yapmak mümkün mü? Asp ve Java aynı andada kullanılabilir. Yeterki sayı sutunundaki değer 5 dk'da bi 1 değer yukarı çıksın. Maksat ziyaretçilere üye olduktan sonraki zamanda her 5'er dk'da bi 1 puan arttırarak işlem yaptırmak...
_____________________________
1. Dünyadaki ilk N82 ekranı patlatan benim 2. Vista ile N82 güncellemesi yapan yine benim 3. Telefonu kayıt dışı olan yine benim 4. Sinirlendiğimde hırçınlaşan işte o benim 5. Çalışmadığı halde cebinde iki telefon taşıyan kişide benim 6. Yüksek özellikli bilgisayarı olmasına karşın oyun oynamayan yine benim 7. N82 cihazını v30.0.0.019 sürümü kullanan ilk Türk'te benim. Dünyada sayılıyız zaten. Çünkü nokia N82 için v30 sürümünü geri çekti...
soyle de yapabilirsin sanirim. her 5 dakikada bir sitedeki butun kullanicilarin puanini yeniden hesapliyacagina, bu degeri nerede/hangi sayfada gostereceksen o sayfada o degeri uyenin kayit tarihi ve su anki zaman arasi farktan hesaplattirabilirsin. bir sitenin uye sayisi binler olabilir fakat o anki aktif kullanici sayisi genellikle dusuk bir yuzde olur. daha az islem yapmis olursun (buyuk ihtimal). arka planda 7/24 calisacak bir kod da yazabilirsin ama o 7/24 calisan kod herhangi bir nedenle calismazsa puan hesaplari aksar. fakat ilk bahsettigim yontemde sadece kayit tarihi onemli oldugundan puanlarda bir sapma olmaz.
arka planda çalışan 7/24'lük bir kodu nasıl oluşturabilirim peki? çünkü tarihler arasındaki değere göre yapmak bana fayda sağlamıyor... sürekli online olacak üyeler için 7/24 çalışan bir koda ihtiyacım var...
_____________________________
1. Dünyadaki ilk N82 ekranı patlatan benim 2. Vista ile N82 güncellemesi yapan yine benim 3. Telefonu kayıt dışı olan yine benim 4. Sinirlendiğimde hırçınlaşan işte o benim 5. Çalışmadığı halde cebinde iki telefon taşıyan kişide benim 6. Yüksek özellikli bilgisayarı olmasına karşın oyun oynamayan yine benim 7. N82 cihazını v30.0.0.019 sürümü kullanan ilk Türk'te benim. Dünyada sayılıyız zaten. Çünkü nokia N82 için v30 sürümünü geri çekti...
threading ile while(true) icinde database deki degerleri artirabilirsin, thread.sleep ile de bu while in 5 dakika da bir calismasini saglayabilirsin de bu kodu server side programming(asp,jsp) ile yapmak olmaz cunku bu kodlar genelde birisi sayfaya girmek istediginde calisir, sayfayi hazirlar isini bitirir ve cikar. anlatmak istedigim. bu kodu ayri bir programda ve localhost da calistirman gerekir. e sen bu siteyi de hosting kullanarak yayinlamak istersen bu da pek mumkun olmayacaktir. ayrica farzedelim ki bu kod 1 saniyede calisiyor. o kadar surmez de neyse, her 5 dakikada bir saniye sapman olacak. bir gunde 288 saniye yani yaklasik 5 dakika. bir ayda, bir yilda ... ben ilk tavsiyemi tekrar edecem hatta sana sql ini yazayim, disardan bakan birisi icin ha tabloda puan olmus ha tarih olmus
uyeler tablon var bu tabloda, adi (varchar), giristarihi datetime
SELECT DATEDIFF(mi, giristarihi, NOW()) / 5 AS puan, adi FROM uyeler
halen arka planda calisan birseyler istiyorsan sanirim bu eleman bir yol bulmus (bende merak ettim illaki boyle bir servis lazim olsa ne olurdu diye). sayfanin linkini veriyorum.
mantığı söylim sana.online üyeler kodunu buna göre uyarlaman senin işini acaip kolaylıştıracaktır.
onlinelerde sorun yok... işin birde offline uyeler kısmı var... gerçi online olunca puanları hanelerine ekleniyor ama oflineyken eklenmiyor. şimdi uyeleri sıralı saydırıp güncellemeyi deneyeceğim... bakalım ne olacak...
_____________________________
1. Dünyadaki ilk N82 ekranı patlatan benim 2. Vista ile N82 güncellemesi yapan yine benim 3. Telefonu kayıt dışı olan yine benim 4. Sinirlendiğimde hırçınlaşan işte o benim 5. Çalışmadığı halde cebinde iki telefon taşıyan kişide benim 6. Yüksek özellikli bilgisayarı olmasına karşın oyun oynamayan yine benim 7. N82 cihazını v30.0.0.019 sürümü kullanan ilk Türk'te benim. Dünyada sayılıyız zaten. Çünkü nokia N82 için v30 sürümünü geri çekti...
tamamdır oflineleride hallettim... tek 1 online olan kişi bile tüm uyelerin puanlarının yükselmesi için yeterli oluyor.. fikirleriniz için sağolun....
_____________________________
1. Dünyadaki ilk N82 ekranı patlatan benim 2. Vista ile N82 güncellemesi yapan yine benim 3. Telefonu kayıt dışı olan yine benim 4. Sinirlendiğimde hırçınlaşan işte o benim 5. Çalışmadığı halde cebinde iki telefon taşıyan kişide benim 6. Yüksek özellikli bilgisayarı olmasına karşın oyun oynamayan yine benim 7. N82 cihazını v30.0.0.019 sürümü kullanan ilk Türk'te benim. Dünyada sayılıyız zaten. Çünkü nokia N82 için v30 sürümünü geri çekti...
arkadas ozelden mesaj atmis galiba. neden paylasmiyorsunuz? sayfa yuklenirken en son puan guncellemesinin uzerinden gecen zamana gore butun kullanicilarin puanlari mi arttiriliyor?
arkadas ozelden mesaj atmis galiba. neden paylasmiyorsunuz? sayfa yuklenirken en son puan guncellemesinin uzerinden gecen zamana gore butun kullanicilarin puanlari mi arttiriliyor?
Yaptığım mantığı anlatayım...
Sitenin her sayfasına include ettiğim bir dosyaya önce sitedeki üyeleri listeleyecek kodu yazdım. Sonra üye listesi kısmına üyelerin son puan güncelleme tarihine göre bir döngü oluşturdum. Daha sonra eğer üyenin son puan güncelleme zamanı ile şimdiki zaman arasındaki fark 5 ise zaman/5+üyepuanı şeklinde bir ifade girip üyenin puanını güncelledim ve bir sonraki döngü ile puanın güncellendiği tarihi yenilettim...
Böylelikle siteye üye değil bir ziyaretçi bile (Google, Yahoo Msn Bot) otomatik olarak tüm üyelerin puanlarını güncellemiş oluyor. Üyeerde siteye giriş yaptığında kazandığı puan kadar işlemlerini gerçekleştiriyorlar... Bir nevi kazan harca mantığı.... Tabi birde site işlemlerinde üyeler bir birlerinin puanlarına etkili olduğundan en çok online olan kişi herzaman karda oluyor...
_____________________________
1. Dünyadaki ilk N82 ekranı patlatan benim 2. Vista ile N82 güncellemesi yapan yine benim 3. Telefonu kayıt dışı olan yine benim 4. Sinirlendiğimde hırçınlaşan işte o benim 5. Çalışmadığı halde cebinde iki telefon taşıyan kişide benim 6. Yüksek özellikli bilgisayarı olmasına karşın oyun oynamayan yine benim 7. N82 cihazını v30.0.0.019 sürümü kullanan ilk Türk'te benim. Dünyada sayılıyız zaten. Çünkü nokia N82 için v30 sürümünü geri çekti...
tahminime yakin, boyle bir seyi soylemememin nedeni serverin sayfa isteklerini nasil hallettigini tam bilmememden kaynaklaniyordu. eger bilen birisi cevaplarsa sevinirim, gerci az sonra biraz arastiracagim ama. simdi bu senaryoda birisi sayfaya girerken guncelleme gerektigi ortaya cikti server puanlari guncellemeye basladi. o sirada ikinci bir kisi sayfaya girmek istedi. server bu durumda ilk istegi bitirmeden sen bekle mi der ikinci kullaniciya yoksa paralel bir islemde onun sayfa istegini de hazirlamaya mi baslar. cunku bekletmezse puanlarda bir guncelleme islemi daha yapilacaktir.
tahminime yakin, boyle bir seyi soylemememin nedeni serverin sayfa isteklerini nasil hallettigini tam bilmememden kaynaklaniyordu. eger bilen birisi cevaplarsa sevinirim, gerci az sonra biraz arastiracagim ama. simdi bu senaryoda birisi sayfaya girerken guncelleme gerektigi ortaya cikti server puanlari guncellemeye basladi. o sirada ikinci bir kisi sayfaya girmek istedi. server bu durumda ilk istegi bitirmeden sen bekle mi der ikinci kullaniciya yoksa paralel bir islemde onun sayfa istegini de hazirlamaya mi baslar. cunku bekletmezse puanlarda bir guncelleme islemi daha yapilacaktir.
işlemde süre sınırlaması var. Eğer son tarih süresi şuandaki tarih süresinden 5dk ve yukarı ise kod döngüsü çalışıp tüm kullanıcıları güncelleyecek. Eğer değilse işlem gerçekleşmeyecek ve buda sunucuda parformans düşmesini engelleyecek.
kısaca şöyle belirteyim ve kodu size vereyim.
uson_otarih : üyenin son oturum tarihi uson_ptarih : üyenin puanının son güncelleme tarihi
'Enerji Güncelle alanı
set guncelle = baglanti.execute("select * from uyeler")
if guncelle.eof or guncelle.bof then
Response.Write ""
else
do while not guncelle.eof
if tarih > guncelle("uson_otarih") then
Sonuc=DateDiff("n", guncelle("uson_otarih"), guncelle("uson_ptarih"))
if sonuc => 5 then
baglanti.Execute("UPDATE uyeler set en='"&sonuc/5+guncelle("puan")&"' where uid='" & guncelle("uid") & "' ;")
end if
end if
guncelle.movenext
loop
guncelle.close
set guncelle = nothing
end if
'enerji güncelleme alanı bitiş
buradaki Sonuc=DateDiff("n", guncelle("uson_otarih"), guncelle("uson_ptarih")) kısmındaki "n" dakikayı gösterir "s" yaparsanız saniye üzerinden işlem yapar. Gördüğünüz gibi, öncelikle üyeleri saydırma işlemi yaptık üyeler sırasıyla sayılırken üyenin son puan güncelleme tarihi son otorum tarihinden 5'dk ve üzeri ise sonuc değişkenine atılan değer update ile üyenin puan sütununa aktarılır.
örneğin üyenin son giriş zamanı 18:00 olsun sitede saat 18:40'da dolaşan kişi saat 18:00'de girmiş olan bir üyenin puanını; sonuc : 18:40-18:00 =40dk üyenin puanıda: 25 olsun
sonuc/5 : 40/5=8 'den o sıradaki ğyenin puanına ekliyor... yani sonuc/5+guncelle(puan) değerinden üyenin puanı 40/5+25:33 olarak günceller...
bana mantığını söylediniz ben koda döktüm. işine yarayacak kişiler bu kod ile sitesindeki bir çok güncelleme işlemlerini toplu halde otomatik yaptırabilirler...
_____________________________
1. Dünyadaki ilk N82 ekranı patlatan benim 2. Vista ile N82 güncellemesi yapan yine benim 3. Telefonu kayıt dışı olan yine benim 4. Sinirlendiğimde hırçınlaşan işte o benim 5. Çalışmadığı halde cebinde iki telefon taşıyan kişide benim 6. Yüksek özellikli bilgisayarı olmasına karşın oyun oynamayan yine benim 7. N82 cihazını v30.0.0.019 sürümü kullanan ilk Türk'te benim. Dünyada sayılıyız zaten. Çünkü nokia N82 için v30 sürümünü geri çekti...