alimir 795 ارسال شده در تیر 93 گزارش بازنشر ارسال شده در تیر 93 سلام به همگی،در حال کدنویسی یه افزونه لایک برای وردپرس هستم که تا اینجای کار، طراحیش به صورتی بوده که تعداد لایک ها در یک postmeta با نام like_ اضافه میشن و اطلاعات مربوط به ip، زمان و ID هر نوشته، در یک جدول جدید در پایگاه داده.خوب تا اینجای کار مشکلی نیست و برای محدود کردن کاربر به تنها یک لایک، از دوشرط بررسی وجود IP فعلی در پایگاه داده + ست کردن کوکی طولانی مدت، استفاده میشه.منتها مسأله ای که وجود داره، اینه که فرض کنید یک نوشته رو حدودا 1000 تا کاربر لایک میکنند. حالا در ازای هر لایک، یک رکورد به پایگاه داده اضافه میشه که در نهایت -برای یک نوشته- حدودا 1000 سطر اطلاعات در پایگاه داده ذخیره خواهد شد که افزونگی داده رو به شدت بالا میبره.حالا سؤال من از دوستان اینه که آیا روش بهتری وجود داره که هم مشکل افزونگی داده رو نداشته باشه و هم اینکه پیچیدگی کدهای PHP رو زیاد نکنه؟! (البته روش ذخیره همه ی آی پی ها به صورت یک String در یک سطر رو هم چندان جالب نمیبینم) 1 نقل قول لینک به ارسال
Anisi 301 ارسال شده در تیر 93 گزارش بازنشر ارسال شده در تیر 93 (ویرایش شده) به درج اطلاعات زیاد افزونگی گفته نمیشه، افزونگی در صورت طراحی ناصحیح بهوجود میاد (اینو گفتم تا برای دوستانی دیگهای که این نوشته رو میخونن سوء تفاهم پیش نیاد).برای رفع مشکل یک بار اطلاعات رو که unique هم هست در یک جدول جداگانه ذخیره کنید و چون ارتباط چند به چند هست یک جدول واسط ایجاد کنید و رکوردهای مرتبط رو با id-های اونها به هم مرتبط کنید. ویرایش شده تیر 93 توسط Anisi 1 نقل قول لینک به ارسال
alimir 795 ارسال شده در تیر 93 مالک گزارش بازنشر ارسال شده در تیر 93 ممنون anisi عزیز،برخی منابع تعاریف مختلفی از افزونگی داده دارن، ولی اینی که شما میگید علت به وجود اومدن، نه تعریف افزونگی. واژه ی افزونگی یعنی فراوانی بیش از حد و صحیح ترین تعریفش در پایگاه داده، وجود اطلاعات زیاد و مشابه در جداول مختلف. (مشکل من هم دقیقا افزونگی داده است، اطلاعات رکوردها تقریبا با همدیگه مشابه اند و برخی رکوردها در جدول های دیگه تکرار شدند.)خوب در این حالت، ip ها به چه صورت ذخیره خواهند شد؟!؟ همینطور فک میکنم در کلید ها هم مشابهت ایجاد بشه!!! 1 نقل قول لینک به ارسال
Mobin 1669 ارسال شده در تیر 93 گزارش بازنشر ارسال شده در تیر 93 mysql میتونه را راحتی تا چند ده میلیون رکورد رو به راحتی مدیریت کنه پس نگران این موضوع نباشیدذخیره ایپی هم، اگه چند کاربر از یک پروکسی یا V-P-N استفاده کنند بقیه نمیتونن لایک کنن یا وقتی مودم ریست میشه ایپی عوض میشه 3 نقل قول لینک به ارسال
alimir 795 ارسال شده در تیر 93 مالک گزارش بازنشر ارسال شده در تیر 93 mysql میتونه را راحتی تا چند ده میلیون رکورد رو به راحتی مدیریت کنه پس نگران این موضوع نباشیدذخیره ایپی هم، اگه چند کاربر از یک پروکسی یا V-P-N استفاده کنند بقیه نمیتونن لایک کنن یا وقتی مودم ریست میشه ایپی عوض میشهممنون lord_viper عزیز،حقیقتش، چون قرار که احتمالا این افزونه در مخزن وردپرس ثبت بشه، میخوام که کاملا بدون مشکل باشه و بعدها دائما گزارش باگ و ایراد طراحی دریافت نکنم.البته اگه mac address رو ذخیره کنیم، دیگه این مشکل به وجود نمیاد. حالا با این اوضاع، به نظرت ست کردن کوکی میتونه به تنهایی کافی باشه؟!؟ نقل قول لینک به ارسال
Mobin 1669 ارسال شده در تیر 93 گزارش بازنشر ارسال شده در تیر 93 تمامی سیستمهایی که هست از کوکی استفاده میکنند و اطلاعات لایک رو در post_meta ذخیره میکننبرای ثبت در مخزن وردپرس ، بیشتر روی نام گذاری توابع گیر میدن تا احتمالا وجود 2 تابع همنام در 2 پلاگین مختلف از بین بره 3 نقل قول لینک به ارسال
alimir 795 ارسال شده در تیر 93 مالک گزارش بازنشر ارسال شده در تیر 93 والا دو افزونه wti و i like this هم اطلاعات ip و time رو در پایگاه داده ذخیره میکنند. البته به نظر من، نهایتا لایک مطالب اونقدرا هم از نظر امنیتی مهم نیس که بخوایم شرط های مختلفی براش تعیین کنیم! به همین دلیل شاید بهتر باشه جدول جدید رو از افزونه حذف کنم!!!! نقل قول لینک به ارسال
imanfakhar 26231 ارسال شده در تیر 93 گزارش بازنشر ارسال شده در تیر 93 ذخیره اطلاعات ip کار اضافه ایه چون من هر چی فکر می کنم متوجه کارآییش نمی شم ولی ذخیره آی دی کاربران لینک کننده برای اینکه بشه ازشون کوئری گرفت و مثلا لیستشون رو نمایش داد کار خوبیه همونطوری که فرمودند mysql با این تعداد رکوردها از پا نمی افته فقط باید دقت کنید اگر حلقه ای برای اجرای کوئری ای ایجاد کردید یا کاری از این قبیل (برای نمایش تعداد لایک ها و ..) حلقه ی نا محدود ایجاد نکنید که باعث ایجاد پرس و جوی اضافی بشه و به منابع سایت فشار بیاره اگر در یک متای جدا تعداد مجموع لایک ها را نگه دارید و هربار یکی بهش اضافه کنید خیلی راحت می تونید مقدارش را به عنوان حد نصاب حلقه for برای نمایش دیتیل لایک های هر مطلب استفاده کنید 3 نقل قول لینک به ارسال
alimir 795 ارسال شده در تیر 93 مالک گزارش بازنشر ارسال شده در تیر 93 ممنونم جناب فخار،با نظرتون موافقم. ذخیره ی ID کاربر خیلی خوبه ولی متأسفانه عیبش اینه که شخص رو مجبور به نام نویسی و لوگین میکنه، در حالی که شاید خیلی از وبسایتها سیاست ثبتنام رو در سایتشون نداشته باشن! (البته میشه یه تنظیماتی هم برای این حالت تعیین کرد که خود شخص تصمیم بگیره که کاربر باید لوگین کنه یا نه!)برای نمایش تعداد لایک ها، همونطور که خودتون هم اشاره کردید از postmeta استفاده کردم و با استفاده از چند شرط ساده، کلا نیازی به استفاده از حلقه نشد.حالا تو این شرایط، به نظر شما بهترین کار چی میتونه باشه؟!؟ 1 نقل قول لینک به ارسال
imanfakhar 26231 ارسال شده در تیر 93 گزارش بازنشر ارسال شده در تیر 93 شما که کار رو انجام دادید قطعا بهترین شرایط همونه که ایجاد کردید اکثر سیستم های مشابه شرایط انتخاب لاگ این را دارند و اگر تاییدش نکنند می شه با قرار دادن یک شرط دستورات را کوکی کرد سورس این افزونه رو هم ببینید بد نیستhttp://wordpress.org/plugins/thanks-you-counter-button/ 1 نقل قول لینک به ارسال
پست های پیشنهاد شده
به گفتگو بپیوندید
هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .