• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
بهترین روش نگهداری لایک های یک پست
#1
به نام خدا

سلام،
دوستان من چندتا روش توی نت دیدم برای اینکه سیستم لایک کردن یک پست رو داشته باشیم (مثل مثلا اینستاگرام).

یکی از این روش ها میگه یک تیبل ایجاد کنیم و هر بار که یک پست لایک میشه ایدی پست و ایدی کاربری که لایک کرده رو ذخیره کنیم و یک سری اطلاعات دیگه،حالا برای گرفتن تعداد لایک های یک پست کوئری بزنیم و تعداد رو بدست بیاریم،

به فرض اگه تعداد رکوردها به چند میلیون رسید (مثلا 10000 کاربر در روز 70000 پست رو لایک کنن) در اون صورت اجرای کوئری زمان بر میشه و دیتابیس هم سنگین میشه.

این روش اصولیه؟
بهترین و بهینه ترین روش چیه؟
  پاسخ
تشکر شده توسط :
#2
نقل قول: یکی از این روش ها میگه یک تیبل ایجاد کنیم و هر بار که یک پست لایک میشه ایدی پست و ایدی کاربری که لایک کرده رو ذخیره کنیم و یک سری اطلاعات دیگه،حالا برای گرفتن تعداد لایک های یک پست کوئری بزنیم و تعداد رو بدست بیاریم،
روش درستی هست ، منتها کش کنید ، یا اینکه یه فیلد توی تیبل پست ایجاد کنید هر باری که لایکی اضافه میشه به جدول دوم که اضافه کردید ، یه count بگیرید و در جدول post نیز ثبتش کنید تا هر بار مجبور نشید پردازش count رو انجام بدید .

روش دیگه هم استفاده از دیتابیسهای nosql هست
وبلاگ rezaonline.net/blog
سفارش برنامه نویسی reza.biz
Php , mysql , postgresql , redis , Yii and ... Cool
  پاسخ
تشکر شده توسط : Crashday
#3
(۱۳۹۶ تير ۱۶, ۰۳:۴۳ ق.ظ)Reza نوشته:
نقل قول: یکی از این روش ها میگه یک تیبل ایجاد کنیم و هر بار که یک پست لایک میشه ایدی پست و ایدی کاربری که لایک کرده رو ذخیره کنیم و یک سری اطلاعات دیگه،حالا برای گرفتن تعداد لایک های یک پست کوئری بزنیم و تعداد رو بدست بیاریم،
روش درستی هست ، منتها کش کنید ، یا اینکه یه فیلد توی تیبل پست ایجاد کنید هر باری که لایکی اضافه میشه به جدول دوم که اضافه کردید ، یه count بگیرید و در جدول post نیز ثبتش کنید تا هر بار مجبور نشید پردازش count رو انجام بدید .

روش دیگه هم استفاده از دیتابیسهای nosql هست

ممنون،به جای اینکه count بگیرم مستقیما با یک کوئری مقدار count رو یکی زیاد می کنم،فقط یه سوال پیش میاد:

فرض کنیم تعداد Count که داخل دیتابیس ذخیره شده 50 هست،حالا اگر 20 تا کاربر همزمان اون پست رو لایک کنن تعداد Count میشه 51 یا میشه 70 ؟

این کدهای فعلی هست که درست کار میکنه،بی زحمت یه نگاه بندازین:

کد:
// بدست آوردن تعداد لایک های یک پست و اضافه کردن یک به آن
// Run Queries
$conn->autocommit(FALSE);
    $SQL1 = $conn->query("INSERT INTO tbl_likes (postid,userid) VALUES ('$Postid', '$Userid')");
    $SQL2 = $conn->query("INSERT INTO tblevent..... "); // ارسال نوتیفیکیشن به کسی که پست رو ارسال کرده
    $SQL3 = $conn->query("UPDATE tblehsas SET likescount = likescount + 1 WHERE id = '$Postid'"); // آپدیت کردن likescount در جدول پست ها
if ($SQL1 && $SQL2 & $SQL3)
    {
        if($conn->commit()){
            echo "Like Shod";
        }else{
            echo "error";
        }
    }
else
    {
        $conn->rollback();
        echo "error";
    }
  پاسخ
تشکر شده توسط :


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان