smart
5 سال پیش توسط smart مطرح شد
2 پاسخ

ارسال اطلاعیه به همه کاربران

سلام دوستان. وقت بخیر. من میخوام تو وبسایتم یه بخشی بذارم که ادمین بتونه به همه کاربرا یه اطلاعیه بفرسته. که در اینصورت روی بخش اطلاعیه ها یه کانتر قرمز قرار میگیره یعنی اطلاعیه جدید اومده. و وقتی کاربر اون اطلاعیه رو خوند کانتر حذف بشه یعنی توسط اون کاربر به حالت "خوانده شده" در بیاد.
چیزی که واضحه من نمیخوام واسه هر کاربر یه اطلاعیه ثبت بشه چون تعداد کاربرا زیادن.
حالا راه حلی هست که بشه این کار رو انجام داد؟ مشکل اصلی همون خونده شدن توسط کاربرا هست.
یه راه حلی که به ذهنم رسیده اینه که بیام توی یه ستون از نوع تکست id کاربرایی که اون اطلاعیه رو خوندن رو ذخیره کنم و موقع نمایش اگه id کاربر بین اون idها بود دیگه کانتر نذارم. این کار اوکیه ؟ باعث نمیشه به سرور فشار بیاد؟ چون هم تعداد کاربرا زیاد هست هم توی هرصفحه ای کوئری باید زده بشه و این کانتر لود بشه.


ثبت پرسش جدید
صادق برزگر
تخصص : برنامه نویس وب
@Sadegh19B 5 سال پیش آپدیت شد
1

برای اطلاعیه ها یه جدول به شکل زیر در نظر بگیر (اگه خواستی میتونی فیلد های دیگه ای هم اضافه کنی)

Notifications:
id      text      created_at

یه جدول هم برای اینکه کاربران پیام رو خوندن یا نه

User_Read_Notification:
user_id      notification_id       read_at

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


smart
@smartgarden2016 5 سال پیش مطرح شد
0

@Sadegh19B
بله متوجه شدم. عالی بود. ممنون


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام