چطور لیست کاربران آنلاین تو هر صفحه رو تعیین کنم!؟

.net: چطور لیست کاربران آنلاین تو هر صفحه رو تعیین کنم!؟
چند روزه فکرمو مشغول کرده!
الگوریتم بگید...

دقیقا مثل همین Forum که کاربران آنلاین تو هر تاپیک رو لیست می کنه! از کجا می فهمه؟!
 

shirani

مدیر انجمن <A href="http://forum.majidonline.com/f
من این کار کردم :

یک فیلد تو دیتا بیس به اسم Online با خاصیت Yes/No در دیتا بیس اکسس

موقعی که کاربر لاگین میکنه اون True بشه و موقعی که لاگ اوت میکنه یا کوکی حذف میشه False میشه .
 

TNZ187

Member
Session

سلام
برای این منظور راه های بسیار زیادی هست که تقریبا هیچ کدوم کاملا دقیق نیستن و کم خطا دارن . اگه شما می خواهید که لیست کاربران برای هر صفحه رو داشته باشید ، می تونید از Session استفاده کنید . به این معنی که شما یک Session ایجاد می کنید که اسم صفحاتی رو یک نفر وارد می شه ، نگهداری می کنه . این Session بعد از چند دقیقه که کاربر با سایت تماس نداشته باشه پاک می شه و شما به هنگام پاک شدن اون ، یک بازدید کننده از تمام صفحاتی که اون Session داره رو کم می کنید .
البته بعضی ها این کار رو با Cookie انجام می دن . مثلا توی DotNetNuke این مسئله با استفاده از Cookie حل شده . در مورد
استفاده از دیتابیس هم باید بگم که این روش برای بازدید کننده هایی که Login نشده اند جواب نمی ده ، حال اون که شاید ما بخواهیم علاوه بر کاربران تعداد بازدید کننده های غیر عضو رو هم نشون بدیم ( مثل همین صفحه ) .
البته نکته این جاست که هیچ کدوم از این راه ها دقیق نیستند ولی می شه که دقت رو بالاتر برد.
برای مثال در همین مورد Session شما می تونید هر دفعه که کاربر صفحه خودش رو تغییر می ده ، Session رو هم تغییر بدید و تعداد بازدید کننده ها رو همون موقع تغییر بدید نه بعد از نابودی Session .
 

shirani

مدیر انجمن <A href="http://forum.majidonline.com/f
ایشون گفتن لیست افراد آنلاین نه بازدید کنندگان آنلاین اگه باز دید کننده ها را میخواند که تا دلت بخواد اسکریپت رایگان هست
 
آخرین ویرایش:

TNZ187

Member
معذرت خواهی

سلام
معذرت می خواهم که منظور ایشون رو درست متوجه نشده بودم. ولی اگه منظور ایشون کاربران آنلاین هر صفحه هم باشه باز هم روش Session مطرحه . چون با اتصال به بانک مشخص می شه که چند نفر Login شده اند ولی مشخص نمی کنه که الان تو سایت هستند یا نه و یا اینکه کدوم صفحه رو می بینند.
 
با دیتابیس هم میشه.(پایان Session می تونید از DB حذف کنیم.) ولی فشار زیادی به سرور میاد(پروسس بالا میره).
Session هم فقط در صفحه ی کاربر صاحب Session میشه ازش استفاده کرد و دسترسی به همه ی Session ها لیست کردن افراد ممکن نیست.
راه حل؟!
 

TNZ187

Member
session

سلام .
من متوجه مشکل نشدم . Session برای هر فرد مجزا است . بعد اینکه Session تو همه صفحات قابل دسترسی . پس تو هر صفحه که فرد رفت ، وقتی ما Session استفاده کنیم ، Session اون فرد رو دستکاری کردیم . هنگامی که Session طرف تموم می شه هم اون Session رو می خونیم و می بینیم که تو کدوم صفحات به حساب آورده بودیمش و بعد از تمام صفحات حذف می کنیم . من قبلا خودم این کار رو انجام دادم و به عنوان یک پروژه به یک موسسه داده بودم . حالا اگه مشکلی هست که من متوجه نیستم بیشتر توضیح بدید . اگه هم که خیلی پرتم بگید دیگه ادامه ندم.:sad:
 

MDP

Well-Known Member
TNZ درست میگه مشکل کجاست؟

باید session ها رو برای هر فردی که میاد ست کنید!

کارت درسته عزیز پرت هم نیستی!
 
سلام .
من متوجه مشکل نشدم . Session برای هر فرد مجزا است . بعد اینکه Session تو همه صفحات قابل دسترسی . پس تو هر صفحه که فرد رفت ، وقتی ما Session استفاده کنیم ، Session اون فرد رو دستکاری کردیم . هنگامی که Session طرف تموم می شه هم اون Session رو می خونیم و می بینیم که تو کدوم صفحات به حساب آورده بودیمش و بعد از تمام صفحات حذف می کنیم . من قبلا خودم این کار رو انجام دادم و به عنوان یک پروژه به یک موسسه داده بودم . حالا اگه مشکلی هست که من متوجه نیستم بیشتر توضیح بدید . اگه هم که خیلی پرتم بگید دیگه ادامه ندم.
من تو session کاربر ثبت می کنم که کدوم صفحه است... حالا چطوری لیست تمام کاربرهایی که تو صفحه هستن بیارم!؟ چطوری دسترسی به Session های دیگران داشته باشم؟! متوجهید؟ یعنی لیست همه Session ها رو بیارم و Session("PAGE") رو بخونم!؟
 

TNZ187

Member
Application

این چیزی که من می نویسم ، با توجه به اینه که شما نخواهید از دیتابیس استفاده کنید .
چیزی که مسلمه اینه که شما نمی تونید Session ها رو لیست کنید ( اگه می گم مسلمه به خاطر اینه که خیلی دنبالش دویدم ولی پیدا نکردم ) . پس Session رو فقط باید به عنوان یک حافظه موقتی اختیار کنید . شما می بایست برای هر صفحه یک متغیر Application هم داشته باشید . توی اون فقط اسم کاربران هر صفحه رو وارد کنید . وقتی Session داره نابود می شه ، با توجه به اینکه شما می دونید که هر کاربر توی کدوم صفحه ها حساب شده ، از هر صفحه اسم اون کاربر رو برمی دارید .
خوب البته این روش خیلی روتین نیست ، ولی بدون استفاده از دیتابیس فکر کنم بد نباشه.:)
 
این چیزی که من می نویسم ، با توجه به اینه که شما نخواهید از دیتابیس استفاده کنید .
چیزی که مسلمه اینه که شما نمی تونید Session ها رو لیست کنید ( اگه می گم مسلمه به خاطر اینه که خیلی دنبالش دویدم ولی پیدا نکردم ) . پس Session رو فقط باید به عنوان یک حافظه موقتی اختیار کنید . شما می بایست برای هر صفحه یک متغیر Application هم داشته باشید . توی اون فقط اسم کاربران هر صفحه رو وارد کنید . وقتی Session داره نابود می شه ، با توجه به اینکه شما می دونید که هر کاربر توی کدوم صفحه ها حساب شده ، از هر صفحه اسم اون کاربر رو برمی دارید .
خوب البته این روش خیلی روتین نیست ، ولی بدون استفاده از دیتابیس فکر کنم بد نباشه
مشکل من از اول همین بود که الان شما متوجه شدید! نمی دونم بقیه دوستان هی می گن Session ! خوب Session همه می دونن باید چی کار کنن و نام صفحه و فلان....
در مورد نظر شما: آیا vBulletin این همه Application برای هر تاپیک ایجاد می کنه!؟ فکر نمی کنید این خودش از Database بیشتر Process داره؟ Application نباید تعدادش بالا بره...
 

TNZ187

Member
زیاد نمی شه

سلام
شما فرموده بودید که استفاده از Session و Application باعث می شه پروژه سنگین بشه . من محاسبه کردم . برای 1000 تا پست و 1000 کاربر که هرکدوم در 10 صفحه حساب شده باشند ، چیزی معادل 160 kb از Ram سرور مشغول می شه . حالا راستش رو بخواهید نمی دونم که این زیاده یا نه . به هر حال
شما هر راهی رو که استفاده کنید ، حجم زیادی رو می گیره ( با توجه به 160 kb ) . به نظر من اگه یکی از مدیران فروم که سازندگان و پشتیبانان همین سایت ارتباط دارند ، مرحمت کنند و ساختار Vbulletin رو ارائه بدند خیلی عالی می شه .:D:D
 
شما چطوری حساب کردید؟ اگر این طوری باشه که دیگه دیتابیس لازم نداریــــم!!!
 
اگر نشستید بایتها رو جمع کردید که بی خیال!!! در ضمن عرض کردن Process CPU نه Ram
 
در کل Application باید تعدادش کم باشه و نباید از Application زیاد استفاده کرد.برای استفاده از Application برای ذخیره ی تعداد کاربران آنلاین هم توش کلی حرف هست! چه برسه که 1000 تا Application ایجاد کنیم!
 

TNZ187

Member
من یه سوال دارم ؟

سلام
ولی من نشستم بایت ها رو جمع زدم .:cry:
تازه ، Application مگه روی رم تأثیر نمی ذاره ؟ چرا شما می گید Cpu ؟:sad:
خوب چرا استفاده از Application توش حرفه ؟ من که تا حالا خیلی کار دیدم که توی اون ها از Application استفاده می شه. :sad:
تازشم خود مایکروسافت توی کارهاش از در و دیوار Application بالا می ره .:sad:
گذشته از همه این حرف ها چرا استفاده از Application رو اشتباه قلمداد می کنید ؟
 
Application برای ذخیره سازی اطلاعات به مقدار زیاد نیست... چون اصلا برای این کار طراحی نشده.مثل این می مونه که شما برید لیست داروهای یک داروخونه رو تو فایل متنی لیست کنید نه دیتابیس!!
 

TNZ187

Member
زیاد نیست که

سلام
ما که قرار نیست تو Application مقدار زیادی ذخیره کنیم . من حساب کردم ، اصلا تمام حجمی که فقط Application می گیره ، 40 Kb . اگه من دفعه قبل گفتم 160 kb به احتساب Session ها بود . 40 kb خیلی کم تر لیست داروهای داروخونه است . بعدش هم که قرار نیست از Application به جای دیتابیس استفاده کنیم !! کی گفته که از Application به جای دیتابیس استفاده کنیم . اگه من گفتم که اطلاعات این پروژه رو Applicaion ذخیره بشه به خاطر سرعت بیشتر بود . اگه شما اطلاعات رو توی دیتابیس ذخیره کنید ، برای هر بار دریافت اطلاعات فقط یک بار باید Connection برقرار کنید ، که این دیگه واقعا سرعت رو پایین می آره . مخصوصا اینکه برای هر پست بخواهید یک Connection برقرار کنید .
تازه ، چرا از پست من فقط تیکه مورد دارش رو انتخاب کردید . :) .
شما با مدیرهای انجمن ارتباط ندارید ؟ اون ها حتما می تونند کمک کنند . چون ما هرچقدر هم که بحث کنیم به نتیجه ای نمی رسیم . چرا که احاطه کامل روی همه راه حل ها نداریم .
 
مثال زدم! جمله من رو بخونید:
چون اصلا برای این کار طراحی نشده.مثل این می مونه که شما برید لیست داروهای یک داروخونه رو تو فایل متنی لیست کنید نه دیتابیس!!

شما با مدیرهای انجمن ارتباط ندارید ؟ اون ها حتما می تونند کمک کنند . چون ما هرچقدر هم که بحث کنیم به نتیجه ای نمی رسیم . چرا که احاطه کامل روی همه راه حل ها نداریم .
نمی دونم شما چکار مدیرها دارید!؟ کی گفته اونها همه چیز می دونن!؟!؟! گیری کردیم ها! فروم برای بحث همست! سوال و جواب از مدیر که نیست!

تازه ، چرا از پست من فقط تیکه مورد دارش رو انتخاب کردید . .
خوب کجاشو انتخاب کنم!؟

در هر صورت ممنون.ولی استفاده از Application منطقی نیست! (مثال دیتابیس و فایل متنی ربطی به این نداره... مثاله نه مشابه که شما دارید اونارو با این مقایسه می کنید! مثلا می گم نمی شه ناهار هویج خورد،مثل این می میونه صبحانه کباب بخوری... شما این طوری تحلیل کردید: کی گفته نمی شه ناهار کباب خورد!؟ )
 

TNZ187

Member
آخریشه

سلام:D
من اگه گفتم به مدیرها بگید منظورم حضرت امیر لول نبود . بلکه منظورم سازندگان سایت بود که Vbulletine رو روی این سایت پیاده سازی کردند .
در هر حال خیلی ممنون که به چرت و پرت های من جواب دادید.
 

جدیدترین ارسال ها

بالا