PDA

View Full Version : تشخیص این که کاربر دیگه آنلاین نیست؟؟



H:Shojaei
یک شنبه 09 آذر 1393, 23:11 عصر
سلام...
چطور تشخیص بدیم کاربر دیگه آنلاین نیست؟؟
با توابع unbeforeonload و unload و onunload که نمیشه فک کنم چون سرچیدم میگن مشکل امنیتی داشته و unsupport شدن...
البته یه راه تو ذهن خودم هست که با کرون جابز میشه... ولی بار اضافی به سرور وارد میکنه...
روش های معمول واسه این کار چیه؟؟

H:Shojaei
یک شنبه 09 آذر 1393, 23:23 عصر
فک کنم اینطوریه که وقتی کاربر آنلاین هست یه تابع ajax تو جدول کاربران آنلاین ای دی و زمان فعلی رو ثبت میکنه و وقتی چک میشه اگه کاربر بیشتر از مثلا 1 دقیقه اون زمانش تغییر نکرده بود و بروز نشده بود دیگه کاربر آفلاین هست...

Unique
دوشنبه 10 آذر 1393, 01:01 صبح
نیاز به چک کردن مداوم نیست ! البته بستگی داره برای چی میخوایم چک کنیم که کاربر آنلاین هست یا نه ! معمولا یک فیلد در نظر میگیریم که آخرین زمانی که کاربر درخواستی داده را ثبت کنه ! حالا اگه مثلا ۳۰ دقیقه درخواستی نیومده بود کاربر را اتوماتیک logout میکنیم. همیشه هم میتونیم بررسی کنیم کاربر چه مدت هست که درخواستی نداشته. چک کردن مداوم هر دقیقه بار زیاید میگذاره و زیاد مناسب نیست مخصوصا اگه دلیل خاصی نداتشه باشه !

H:Shojaei
دوشنبه 10 آذر 1393, 20:48 عصر
نیاز به چک کردن مداوم نیست ! البته بستگی داره برای چی میخوایم چک کنیم که کاربر آنلاین هست یا نه ! معمولا یک فیلد در نظر میگیریم که آخرین زمانی که کاربر درخواستی داده را ثبت کنه ! حالا اگه مثلا ۳۰ دقیقه درخواستی نیومده بود کاربر را اتوماتیک logout میکنیم. همیشه هم میتونیم بررسی کنیم کاربر چه مدت هست که درخواستی نداشته. چک کردن مداوم هر دقیقه بار زیاید میگذاره و زیاد مناسب نیست مخصوصا اگه دلیل خاصی نداتشه باشه !
درست میفرمایید ولی من واسه یه بازی این کار رو میخوام انجام بدم که دو نفر در حال بازی هستن و باید هر یه دقیقه حد اقل از همدیگه با خبر باشن واسه این کار راه بهتر به جز اجرای یه تابع ایجکس نیست؟؟

Mori Bone
دوشنبه 10 آذر 1393, 20:57 عصر
می تونی کاربران رو موقعه لاگین تو دیتا بیست ذخیره کنید. به صورت سشن. تو امضام هست. از همون استفاده کن
ذخیره سازی سشن ها در دیتابیس (http://barnamenevis.org/showthread.php?466527-%D8%B0%D8%AE%DB%8C%D8%B1%D9%87-%D8%B3%D8%A7%D8%B2%DB%8C-%D8%B3%D8%B4%D9%86-%D9%87%D8%A7-%D8%AF%D8%B1-%D8%AF%DB%8C%D8%AA%D8%A7%D8%A8%DB%8C%D8%B3-%D8%A8%D9%87-%D8%B1%D9%88%D8%B4-PDO)

H:Shojaei
دوشنبه 10 آذر 1393, 21:12 عصر
می تونی کاربران رو موقعه لاگین تو دیتا بیست ذخیره کنید. به صورت سشن. تو امضام هست. از همون استفاده کن
ذخیره سازی سشن ها در دیتابیس (http://barnamenevis.org/showthread.php?466527-%D8%B0%D8%AE%DB%8C%D8%B1%D9%87-%D8%B3%D8%A7%D8%B2%DB%8C-%D8%B3%D8%B4%D9%86-%D9%87%D8%A7-%D8%AF%D8%B1-%D8%AF%DB%8C%D8%AA%D8%A7%D8%A8%DB%8C%D8%B3-%D8%A8%D9%87-%D8%B1%D9%88%D8%B4-PDO)
یه سوال این که وقتی کاربر مثلا مرورگر رو ببنده همون لحظه off میشه؟؟ یعنی این سشن که تو دیتابیس درج شده دقیقا کارش مثل سشن معمولی هست؟؟ خودکار با خروج کاربر حذف میشه؟؟ اگه آره میشه یه توضیح کوچیک بدین چطور میشه که اینطور میشه؟؟

Unique
سه شنبه 11 آذر 1393, 02:29 صبح
درست میفرمایید ولی من واسه یه بازی این کار رو میخوام انجام بدم که دو نفر در حال بازی هستن و باید هر یه دقیقه حد اقل از همدیگه با خبر باشن واسه این کار راه بهتر به جز اجرای یه تابع ایجکس نیست؟؟

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

H:Shojaei
سه شنبه 11 آذر 1393, 09:04 صبح
باز هم برمیگرده که روند بازی چی هست و منطق شما برای آنلاین بودن کاربر چیه ! ولی بازی ها معمولا خودشون از طریق ajax به صورت interval با سرور در حال تماس هستند و توی همون تماس میشه وضعیت آنلاین کاربر را بررسی و بروز کرد و نیازی به نوشتن یک روال جدا برای بروزرسانی نیست. مگر اینکه نیاز به هیچ ارتباطی با سرور برای مدت طولانی نباشه و نیاز باشه یک روال جدا برای بحث آلاین بودن یا نبودن کاربر گذاشت.
دقیقا همین بهترین روشه فکر کنم چون هر کاربر هر 3 ثانیه باید ببینه حریفش کاری اجام داده یا نه که اگه نوبتش شده بود بازی کنه در این صورت آنلاین بودنش هم چک میشه دیگه... البته با الحاق این که سشن هم داخل دیتابیس قرار بگیره کامل تر میشه...
ممنون دوستان

Mori Bone
سه شنبه 11 آذر 1393, 14:47 عصر
یه سوال این که وقتی کاربر مثلا مرورگر رو ببنده همون لحظه off میشه؟؟ یعنی این سشن که تو دیتابیس درج شده دقیقا کارش مثل سشن معمولی هست؟؟ خودکار با خروج کاربر حذف میشه؟؟ اگه آره میشه یه توضیح کوچیک بدین چطور میشه که اینطور میشه؟؟

تو تاپیکه مربوطه هم رو توضیح دادم. دقیقا مانند سشن معمولیه. فقط تو دیتابیس ذخیره میشه