PDA

View Full Version : اشتباه درمحاسبه تعداد کاربران آنلاین



Saber_Fatholahi
دوشنبه 29 مهر 1387, 14:20 عصر
باسلام
دوستان من قبلا برای آمارگیری کاربران سایت از فایل global استفاده می کردم اما حالا با کمال تعجب می بینم برای محاسبه تعداد کاربران آنلاین وقتی از یک صفحه به صفحه دیگه می ریم یا صفحه رفرش می شه یکی به تعداد کاربران آنلاین اضافه می شه
لازم به ذکره که از آجاکس استفاده می کنم چون قبلا اینجوری نبود در فایل global توی قسمت sessionstart کد زیر نوشتم




Application.Lock();
Application["count"] = (int)Application["count"]+1;
Application.UnLock();



دوستانی که راهشو می دونن لطفا بگن چون خیلی غیر منطقی به نظر می رسه که اینجوری باشه

salehbagheri
دوشنبه 29 مهر 1387, 22:06 عصر
بر اساس IP هر بيننده مي توني اين كار رو انجام بدي!
مثلاً اگر كاربر در يك روز با يك IP وارد سايت شد، عمل اضافه كردن بيننده ها انجام نگيره! و برعكس اگر IP ها تفاوت داشت يكي به آنها اضافه بشه!

نميدونم توضيحم خوب بوده يانه؟

shahab_ksh
دوشنبه 29 مهر 1387, 22:19 عصر
بر اساس IP هر بيننده مي توني اين كار رو انجام بدي!
مثلاً اگر كاربر در يك روز با يك IP وارد سايت شد، عمل اضافه كردن بيننده ها انجام نگيره! و برعكس اگر IP ها تفاوت داشت يكي به آنها اضافه بشه!

بی ارتباط بود با سوال

در مورد سوال شما به قول شما یه عمل غیر منطقی شاید مثلا در جایی مثل master page هم عمل اضافه کردن رو انجام داده باشی

به هر حال میتونی تست کنی زیر همین کد خودتون Response.write ("ok") رو بزن اون وقت دوباره ببین در تمام صفحات و بعد از پست بک همین ok رو نشون میده به احتمال زیاد میبینید نشون نمیده پس نتیجه میگیریم یه جای دیگه عمل اضافه کردن رو انجام میده

salehbagheri
دوشنبه 29 مهر 1387, 22:31 عصر
بی ارتباط بود با سوال

يعني چي؟

وقتي كه صفحه سايت شما توسط يك شخص Open ميشه، توسط كدي ميتوني IP شخص رو چك كني! اگر در طول روز از اين IP استفاده نشده بود، در نتيجه X=x+1 (تعداد كاربران =X)
كه در اين صورت Refresh شدن صفحه هم هيچ تأثير در اضافه يا كم شدن تعداد كاربران نداره!

shahab_ksh
دوشنبه 29 مهر 1387, 22:46 عصر
وقتي كه صفحه سايت شما توسط يك شخص Open ميشه، توسط كدي ميتوني IP شخص رو چك كني! اگر در طول روز از اين IP استفاده نشده بود، در نتيجه X=x+1 (تعداد كاربران =X)
كه در اين صورت Refresh شدن صفحه هم هيچ تأثير در اضافه يا كم شدن تعداد كاربران نداره!


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

الگوریتم شمارنده شما هم الگوریتم خوبی نیست ! IP رو کجا میخای هر روز نگه داری ؟ و هر بار هم کلی کار سر دیتابیس بریزی خیلی ها هم با IP شیر وارد میشن مثل بعضی از ADSL دارها

salehbagheri
دوشنبه 29 مهر 1387, 22:59 عصر
ببخشيد! حرف شما درست!


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

ولي فكر نمي كنيد سوال كمي گيراييش پايينه! معلوم نيست كه آقاي فاتحي سر الگوريتم شمارش مشكل دارند يا فايل Global ؟

Saber_Fatholahi
سه شنبه 30 مهر 1387, 16:05 عصر
ببخشيد! حرف شما درست!



ولي فكر نمي كنيد سوال كمي گيراييش پايينه! معلوم نيست كه آقاي فاتحي سر الگوريتم شمارش مشكل دارند يا فايل Global ؟
سلام دوست من اولا من صابر فتح الهی هستم
دوما خیلی ممنونم که وقت گذاشتین
ببین دوست من کد من چه مشکلی داره قبلا کار می کرد اما الان چند بار به ازای هر صفحه اجرا میشه من چیکار کنم؟

milade
چهارشنبه 01 آبان 1387, 04:56 صبح
سلام
دوستان و اقایان محترم شهاب جان و اقای باقری به این کل کل خاتمه بدید!!!
در هنگام خوندن متوجه شدم یه طورایی اقا شهاب درست می گن چون استاد فتح اللهی احتمالا از local استفاده می کنن و لوکال هم همیشه 127.0.0.1 هست(البته اگه تغییرش ندید!!!) پس مشکل یه جای دیگه هست می دونید چرا؟؟؟؟؟؟
چون هربار session_start خونده میشه و مشکل افرینه
_________________________
یه راهنمایی:
شما یه سشن مثلا count رو تخصیص بدید به کاربر همین که وارد یه صفحه شد اگه مقدارش null بود خوب به اپلیکیشن یکی اضافه کنید و count رو مقدار بدید اما اگه نال نبود هیچی بیخیال !!!!!
همین!!!!!!!
ارزوی موفقیت دارم برا همتون
بای

Saber_Fatholahi
پنج شنبه 02 آبان 1387, 10:29 صبح
دوست من كمي بيشتر توضيح بدين ممنون ميشم نمونه اين كد توي سايت http://www.anas.ir/ به كار رفته اونجا كه لوكال نيست در ضمن اين كد قبلا درست كار مي كرد وقتي از اي جكس استفاده مي كنم مشكل داره

Saber_Fatholahi
یک شنبه 05 آبان 1387, 11:18 صبح
آقای راد اگه ممکنه کمکم کنین واقعا اجرای این کد غیر منطقیه

milade
یک شنبه 05 آبان 1387, 11:59 صبح
یه سشن بساز:

session("online")=""
حالا در لود بنویس:

if session("online")="" then
session("online")="x"
aplication("online" +=1
else
end if
همین !
موفق باشید

Behrouz_Rad
یک شنبه 05 آبان 1387, 13:39 عصر
این روش های منسوخ شده و آماتور مآبانه رو فراموش کنید.
از Cache استفاده کنید... ذخیره ی IP کاربر برای شناسایی اون خوبه اما از اونجایی که در یک محیط Shared، چند نفر میتونن IP یکسان داشته باشن، بهتره که روی سیستم کاربر، Cookie هم ذخیره بشه.
سختی ایجاد همچنین کامپوننتی در درجه ی متوسطه. اگر قصد جدی داری، شروع کن، من هم کمکت میکنم.

موفق باشید.

Saber_Fatholahi
دوشنبه 06 آبان 1387, 19:38 عصر
این روش های منسوخ شده و آماتور مآبانه رو فراموش کنید.
از Cache استفاده کنید... ذخیره ی IP کاربر برای شناسایی اون خوبه اما از اونجایی که در یک محیط Shared، چند نفر میتونن IP یکسان داشته باشن، بهتره که روی سیستم کاربر، Cookie هم ذخیره بشه.
سختی ایجاد همچنین کامپوننتی در درجه ی متوسطه. اگر قصد جدی داری، شروع کن، من هم کمکت میکنم.

موفق باشید.
با یاری خدا چشم، فعلا کمی سرم شلوغه شروع کنم شمارم در جریان می ذارم