PDA

View Full Version : حرفه ای: نیازمند دو تا الگوریتم . اولی کابران آنلاین ، دومی کاربری که بیشترین ارسال را داشته است .



wallfa
چهارشنبه 17 مهر 1392, 23:13 عصر
اول تعدادی کاربر داریم که توی یک جدول مشخصاتشون و با شناسه منحصر به فرد ! یه تعداد پست هم داریم که مربوط به هر کاربر توی جدول دیگه !
حالا می خواهم مشخص کنم کاربری رو که بیشتر ارسال داشته !
در مورد این سئوال این به ذهنم رسید که دو تا جدول جوین کنم و بعد دونه دونه اونها بر اساس الگورتیم بزرگترین عدد مشخص کنید بدست بیارم ، ولی خوب یه مقداری زمان بره به نظرم و اینکه پردازش سرور خیلی بالا میبره !


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


ممنون میشم صاحب نظر ها منجمله مهندس عزیز نظر بدهند .

pirmard66
جمعه 19 مهر 1392, 09:37 صبح
با تشکر از استارتر عزیز...

نمایش کاربران آنلاین سوال منم هست..

دوستان کسی راهنمایی نمیکنه؟

plague
جمعه 19 مهر 1392, 18:28 عصر
تو سیستم های بزرگ و سنگین همیشه کارای محاسباتی رو باید در لحظه ای که تغییر میکنه محاسبه ثبت کنی تا در هنگام نمایش اون آمار آماده و محاسبه شده وجود داشته باشن
هرچی روش بهت بگم آخرش به این میرسه که یدونه فیلد به اسم posts به تیبل یوزر هات اضافه کنی و هر پستی که ارسال میکنن یدونه افزایشش بدی
بهترین روش هم استفاده از trigger هستش که نیاز به کدنویسی ( حداقل توی اسکریپت وبسایت ) نداره و همه کد نویسی و محاسبات سمت دیتبایس انجام میشه



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


مشکل این نیست که یادش بره خارج بشه ! مشکل اینه که 90 درصد کاربر ها وقتی با کامپیوتر شخصیشون کار میکنن اصلا لاگ اوت نمیکنن وقتی کارشون تمام میشه با وبسایتی

2 روش هست :
1 - روش کلاسیک ! در هر بازدید پیج تاریخ رو زخیره میکنی برای اون کاربر و کارابرایی که تاریخ ثبت شده براشون مثلا از 5 دقیقه بیشتر بود ( 5 دقیقه میشه که هیچ پیجی رو بازدید نکردن ) رو خارج شده فرض میکنی و از لیست حذف میکنی که خیلی دقیق نیست ولی جواب میده برای سیستم های معمولی که زیاد دقتش مهم نیست
2 - روش خیلی دقیق و کارامد اینه که ارتباط لحظه ای داشته باشی با کاربر که این با php قابل پیاده نیست که الین برای مواردی که حتما باید دقیق باشه به کار میاد مثل یه چت روم