برگزیده های پرشین تولز

ASP.NETافراد آنلاین در

aref1364

Registered User
تاریخ عضویت
23 جولای 2005
نوشته‌ها
395
لایک‌ها
1
چجوری می تونم تعداد افرا آنلاین رو در ASP.NET نشون بدم؟

من با session_start می تونم فردی رو که وارد شد شناسایی کنم اما نمیدونم چجوری خروجش رو باید تشخیص بدم. در ضمن session_end هم در این مورد درست جواب نمیده!!!

یکی کمک کنه لطفا...!!!
 

shimakh

کاربر تازه وارد
تاریخ عضویت
11 دسامبر 2006
نوشته‌ها
115
لایک‌ها
0
سلام
متاسفانه من جواب سؤالتون رو نمی دونم ولی دو تا سوال برای خودم پیش اومد
1- چطور از session_start استفاده می کنید؟
2- چطور می تونم تعداد افرادی رو که امروز از سایت بازدید کردند رو تشخیص بدم؟
متشکرم​
 

mehdivk

Registered User
تاریخ عضویت
5 آپریل 2006
نوشته‌ها
319
لایک‌ها
0
دوست عزیز من نمی دانم مشکل شما در مورد Session_end چیست ؟ لطفا در مورد مشکل خود بیشتر توضیح دهید . اما برای شمارش تعداد کاربران آنلاین در وب سايت خود می توانید یک Application درست کنید نه یک Session . این Application هست که توسط تمامی کاربران سايت قابل دسترس است .
در Session_Start به مقدار فعلی Application یکی اضافه کن و در Session_end از مقدار فعلی یکی کم کن . به این ترتیب شما می توانید تعداد کاربران آنلاین در در هر لحطه داشته باشید .
 

aref1364

Registered User
تاریخ عضویت
23 جولای 2005
نوشته‌ها
395
لایک‌ها
1
دوست عزیز من نمی دانم مشکل شما در مورد Session_end چیست ؟ لطفا در مورد مشکل خود بیشتر توضیح دهید . اما برای شمارش تعداد کاربران آنلاین در وب سايت خود می توانید یک Application درست کنید نه یک Session . این Application هست که توسط تمامی کاربران سايت قابل دسترس است .
در Session_Start به مقدار فعلی Application یکی اضافه کن و در Session_end از مقدار فعلی یکی کم کن . به این ترتیب شما می توانید تعداد کاربران آنلاین در در هر لحطه داشته باشید .

من دقیقا همین کار رو کردم. الان مشکل اینجاست که session_end کار نمی کنه. یعنی کم نمیشه مقادیر از application
 

H_R

مدیر بازنشسته
تاریخ عضویت
30 مارس 2005
نوشته‌ها
3,298
لایک‌ها
17
سن
42
محل سکونت
North Pole
در مورد کاربران آنلاین ، چیزی که من توی برنامه های بزرگ دیدم اینه که میان IP کاربر ها رو با زمانی که بازدید داشتن توی یه sql server DB ذخیره میکنن ، بعد یه زمانی مشخص میکنن کاربرای یی که توی آون بازه زمانی قرار دارند آنلاین محسوب میشن . البته روشهای دیگه ای هم هست ولی جالبی این روش اینه که شما اطلاعات بیشتری رو هم میتونید داشته باشید مثل اینکه الان چند کاربر چه صفحه ای رو میبینن و کلی اطلاعات دیگه !
 

mehdivk

Registered User
تاریخ عضویت
5 آپریل 2006
نوشته‌ها
319
لایک‌ها
0
در مورد کاربران آنلاین ، چیزی که من توی برنامه های بزرگ دیدم اینه که میان IP کاربر ها رو با زمانی که بازدید داشتن توی یه sql server DB ذخیره میکنن ، بعد یه زمانی مشخص میکنن کاربرای یی که توی آون بازه زمانی قرار دارند آنلاین محسوب میشن . البته روشهای دیگه ای هم هست ولی جالبی این روش اینه که شما اطلاعات بیشتری رو هم میتونید داشته باشید مثل اینکه الان چند کاربر چه صفحه ای رو میبینن و کلی اطلاعات دیگه !

ایده ی جالبیه
 

aref1364

Registered User
تاریخ عضویت
23 جولای 2005
نوشته‌ها
395
لایک‌ها
1
در مورد کاربران آنلاین ، چیزی که من توی برنامه های بزرگ دیدم اینه که میان IP کاربر ها رو با زمانی که بازدید داشتن توی یه sql server DB ذخیره میکنن ، بعد یه زمانی مشخص میکنن کاربرای یی که توی آون بازه زمانی قرار دارند آنلاین محسوب میشن . البته روشهای دیگه ای هم هست ولی جالبی این روش اینه که شما اطلاعات بیشتری رو هم میتونید داشته باشید مثل اینکه الان چند کاربر چه صفحه ای رو میبینن و کلی اطلاعات دیگه !

این موضوع یه جورایی برای من گنگه!!!
این که نشد تعداد آنلاین ها. این شد باز مثل اون سیاست های تبلیغاتی الکی!
میشه لطفا بیشتر توضیح بدید تا اگه قضیه رو اشتباه گرفتم اصلاحش کنم تو ذهنم؟؟؟
ممنون.
 

m3hrz4d

Registered User
تاریخ عضویت
21 سپتامبر 2005
نوشته‌ها
620
لایک‌ها
1
محل سکونت
اصفهان
من دقیقا همین کار رو کردم. الان مشکل اینجاست که session_end کار نمی کنه. یعنی کم نمیشه مقادیر از application

به نظر من
علت اینکه فکر میکنی session_end کار نمیکنه اینه که انتظار داری وقتی صفحه رو (توی explorer) بستی session_end فراخوانی بشه.در صورتی که session_end زمانی فراخوانی میشه که هیچ request ی از کاربر توی مدت session time out فرستاده نشه.یعنی اگه مثلا session time out برابر 10 دقیقه باشه و شما یک صفحه رو باز کنی و همون لحظه ببندی 10 دقیقه بعد session ت time out میشه و session_end فراخوانی میشه.ببابراین آمار افراد آنلاینی که با این روش گرفته میشه معمولا بیشتر از تعداد واقعی هستش.
 

H_R

مدیر بازنشسته
تاریخ عضویت
30 مارس 2005
نوشته‌ها
3,298
لایک‌ها
17
سن
42
محل سکونت
North Pole
به نظر من
علت اینکه فکر میکنی session_end کار نمیکنه اینه که انتظار داری وقتی صفحه رو (توی explorer) بستی session_end فراخوانی بشه.در صورتی که session_end زمانی فراخوانی میشه که هیچ request ی از کاربر توی مدت session time out فرستاده نشه.یعنی اگه مثلا session time out برابر 10 دقیقه باشه و شما یک صفحه رو باز کنی و همون لحظه ببندی 10 دقیقه بعد session ت time out میشه و session_end فراخوانی میشه.ببابراین آمار افراد آنلاینی که با این روش گرفته میشه معمولا بیشتر از تعداد واقعی هستش.

منم یه توضیحی بر توضیحات پلاس جان بدم : شما هر کاری بکنی نمیتونی یه عدد دقیق به عنوان کاربر های آنلاین بدی چون همونطوری که خودت هم خوب میدونی ارتباط سرور با کلاینت اینجوری اه که یه درخواستی فرستاده میشه از طرف کاربر (مرورگرش البته ! ) و یه جوابی هم از سرور به مرورگر کاربر ارسال میشه که همه این اتفاقات در یک لحضه می افته و این وسط هیچ ارتباطی بین کاربر و سرور برقرار نیست که سرور مطمئن شه این بابا هنوز داره صفحه سایت مارو میخونه یا رفته یه جای دیگه داه برای خودش جک میخونه !
روی همین حساب افرادی که طی یک مدت خاصی از سرور درخواست داشتن به عنوان افراد آنلاین به حساب میان حالا به هر روشی که میخوای حساب کنی ! مدتشم معمولا 10 تا 20 دقیقه در نظر میگیرن .

این موضوع یه جورایی برای من گنگه!!!
این که نشد تعداد آنلاین ها. این شد باز مثل اون سیاست های تبلیغاتی الکی!
میشه لطفا بیشتر توضیح بدید تا اگه قضیه رو اشتباه گرفتم اصلاحش کنم تو ذهنم؟؟؟
ممنون.

کدوم سایت های تبلیغاتی ؟!
 

m3hrz4d

Registered User
تاریخ عضویت
21 سپتامبر 2005
نوشته‌ها
620
لایک‌ها
1
محل سکونت
اصفهان
البته یه روش شاید احمقانه! برای اینکه بشه آمار تقیریبا دقیقی گرفت اینه که یه جاوا اسکریپت بگذاری که مثلا هر 10 ثانیه یک صفحه ی سایت رو درخواست کنه و این صفحه لیست درخواست ها که توی application هست رو هی آپدست کنه و وقتی میخوای آمار رو نشون بدی فقط اونهایی رو حساب کنی که تا ده ثانیه قبل درخواست داشتن!!!!
 

sayanir

کاربر تازه وارد
تاریخ عضویت
9 ژانویه 2007
نوشته‌ها
17
لایک‌ها
0
جواب اين سوال بستگي به اين داره كه از كدوم نسخه از asp.net استفاده كنيد.
در نسخه 2 امكاني پيش فرض براي اين موضوع وجود داره فقط بايستي اين امكان را در فايل web.config فعال كرده باشيد.
Membership.GetNumberOfUsersOnline();​

و يكي ديگه از امكانات نسخه 2 masterPage ها هستند كه با استفاده از اين امكان و با كمي برنامه‌نويسي مي‌توانيد تعداد كاربران در حال مشاهده هر صفحه را براساس IP و آخرين زمان مراجعه مشخص كنيد.
خط زير IP كاربر را برمي‌گردونه

Request.UserHostAddress

در مورد اينكه Session_End فراخواني نمي‌شه، به عنوان يك قانون كلي نمي‌توني روي اين رخداد حساب كني، اون هم به خاطره ماهيت پروتكل http كه بدون وضعيت (stateless) است. يعني اينكه اگر كاربر پنجره مرورگرش رو ببنده يا به يك صفحه ديگه بره اين رخداد اتفاق نمي افته. طبق تعريف پس از پايان زمان بقاي يك session بايستي رخداد پايان فراخواني بشه. (به طور پيش فرض 20 دقيقه كه در فايل web.config ميشه كم يا زيادش كرد).
من فكر كنم راه‌هاي بهتري براي كاري كه قصد انجامش رو داري پيدا مي كني. (اگر راهه ديگه‌اي وجود نداره، اكثر مرورگرهاي جديد از ردخداد Unload پشتيباني مي‌كنن كه مي‌توني با جاوااسكريپت كنترلش كني، اما توصيه نمي شه - تو لينك كد لازم وجود داره)

براي اطلاعات بيشتر به لينك زير مراجعه كنيد (كه البته حرف چندان بيشتري براي گفتن نداره):

http://p2p.wrox.com/topic.asp?TOPIC_ID=1774&SearchTerms=vadivel
 

iranidesign

کاربر تازه وارد
تاریخ عضویت
3 جولای 2006
نوشته‌ها
62
لایک‌ها
0
سلام اقای sayair !!!
من یه سوال دارم ؟؟؟؟
میشه یک کم در مورد این Request.UserHostAddress توضیح بدین ؟؟؟
یک مثالی بزنین که بتونیم استفادش کنیم ؟؟؟؟
و ازش یک چیزی یاد بگیریم خدا خیرتون بده .
 

aref1364

Registered User
تاریخ عضویت
23 جولای 2005
نوشته‌ها
395
لایک‌ها
1
سلام اقای sayair !!!
من یه سوال دارم ؟؟؟؟
میشه یک کم در مورد این Request.UserHostAddress توضیح بدین ؟؟؟
یک مثالی بزنین که بتونیم استفادش کنیم ؟؟؟؟
و ازش یک چیزی یاد بگیریم خدا خیرتون بده .

مثالش این:

label1.text=request.userhostaddress

با این کار ادرس آی پی بازدید کننده ی صفحه در label1 نشون داده می شه.
توضیح کاملی دادم نه؟:rolleyes:
 

H_R

مدیر بازنشسته
تاریخ عضویت
30 مارس 2005
نوشته‌ها
3,298
لایک‌ها
17
سن
42
محل سکونت
North Pole
دوست عزیزم شاید من دارم اشتباه میکنم ولی فکر میکنم ولی فکر میکنم
کد:
Membership.GetNumberOfUsersOnline();

که فرمودید تعداد کاربر های لاگین شده آنلاین رو نشون بده نه کل کاربر های آنلاین رو درسته ؟
 

iranidesign

کاربر تازه وارد
تاریخ عضویت
3 جولای 2006
نوشته‌ها
62
لایک‌ها
0
سلام اقا من دنبال این میگردم که sayair تو پستش گفت : (و يكي ديگه از امكانات نسخه 2 masterPage ها هستند كه با استفاده از اين امكان و با كمي برنامه‌نويسي مي‌توانيد تعداد كاربران در حال مشاهده هر صفحه را براساس IP و آخرين زمان مراجعه مشخص كنيد.
) این کار رو چطوری انجام بدیم؟؟؟؟
 

H_R

مدیر بازنشسته
تاریخ عضویت
30 مارس 2005
نوشته‌ها
3,298
لایک‌ها
17
سن
42
محل سکونت
North Pole
masterPage ها هیچ ربطی به کاربران آنلاین ندارند ! مربوط به طراحی غالب وبسایت میشن که کمک میکنن کل سایت از یه طراحی یکسان برخوردار باشه بدون اینکه بخوای هدر و فوتر و اینا رو توی همه صفحه ها به کار ببری !
 

alireza sh

مدیر بازنشسته
تاریخ عضویت
2 ژانویه 2006
نوشته‌ها
2,775
لایک‌ها
70
سن
40
محل سکونت
نصف جهان
دوست عزیزم شاید من دارم اشتباه میکنم ولی فکر میکنم ولی فکر میکنم
کد:
Membership.GetNumberOfUsersOnline();

که فرمودید تعداد کاربر های لاگین شده آنلاین رو نشون بده نه کل کاربر های آنلاین رو درسته ؟


کد:
Membership.GetNumberOfUsersOnline();

[B]Gets the number of users currently accessing an application.[/B]

توصیه میکنم این لینک را ببینید :

http://msdn2.microsoft.com/en-us/library/system.web.security.membership.getnumberofusersonline.aspx
 

iranidesign

کاربر تازه وارد
تاریخ عضویت
3 جولای 2006
نوشته‌ها
62
لایک‌ها
0
آقا من این پست رو دوباره میارم بالا
می خواستم ببینم که روی هر صفحه چطوری مشخص کنم که چند کاربر در حال مشاهده صفحات خاص هستند با کلاسهای membership البته !!!
 
بالا