Javad Ezaz
4 سال پیش توسط Javad Ezaz مطرح شد
6 پاسخ

راهنمایی در رابطه با ذخیره لاگ کاربران

سلام دوستان
به نظرتون بهترین روش برای ذخیره لاگ ها و اکتیویتی های کاربر توی دیتابیس چیه؟
یه سایت آموزشی رو در نظر بگیرین که کاربرا با اکانت ويزه به دوره های آموزشی دسترسی دارن و میخوایم ببینیم هر کاربر چه ویدیویی رو دیده تا بتونیم میزان پرداختی به مدرسین سایت رو حساب کنیم.
من برای ذخیره این لاگها اومدم از mysql استفاده کردم و زمانی که کاربر ویدیویی رو میبینه فیلد جدیدی داخل دیتابیس ذخیره میشه. یه سری محدودیت هم اعمال کردم مثلا توی دیتابیس تو یه رو یه کاربر نمیتونه بیشتر از یه فیلد لاگ داشته باشه. اما با این وجود زمانی که بصورت json و excel از این فیلدها گزارش میگیریم به خاطر زیاد بودن دیتا زمان زیادی صرف میشه.
برای بهتر و بهینه بودن این گزارش گیری چه راه حلی پیشنهاد میدین؟ آیا بدون تغییر دیتابیس و زبان برنامه نویسی میشه گزارش ها رو بهتر ذخیره کرد؟ اگه ابزار خاصی هم برای اینکار هست معرفی کنین.


ثبت پرسش جدید
محسن بستان
تخصص : Senior Backend Developer
@mohsenbostan 4 سال پیش مطرح شد
0

@sjavadez
سلام.
برای چنین کاری پیشنهاد میکنم از Redis استفاده کنید.


Javad Ezaz
تخصص : برنامه نویس php و لاراول
@sjavadez 4 سال پیش مطرح شد
0

@mohsenbostan
باتوجه به اینکه Redis یه in-memory data structure هست، به نظرتون اگه این دیتا از mysql به redis منتقل بشه رم سرور اشغال نمیشه ؟
خیلی از سایت ها که activity های کاربر (مثل لایک، کامنت و ...) رو ذخیره میکنن از چه تکنولوژی هایی استفاده میکنن ؟


محسن بستان
تخصص : Senior Backend Developer
@mohsenbostan 4 سال پیش مطرح شد
0

@sjavadez
Redis بهینه ترین روش هستش.
در مورد رم هم باید بگم که شما نیازی نیست حتما ردیس رو روی سرور تون نصب کنید. می تونید یک سرور ردیس خریداری کنید برای این کار. این طوری دیگه کلا از منابع یک سرور دیگه استفاده میشه.

سایت لیارا چنین سرویسی رو داره.


Javad Ezaz
تخصص : برنامه نویس php و لاراول
@sjavadez 4 سال پیش مطرح شد
1

@mohsenbostan
ممنون بابت وقتی که گذاشتین


Amin Asghari
@amnhck123 3 سال پیش مطرح شد
0

دوستان یک مشکلی من دارم خیلی برام عجیب هست
من یک کوئری insert دارم این 90 درصد وقت ها کار میکنه 10 درصد کار نمی کنه هیچ ربطی هم به شلوغی و خلوتی سرور نداره در همه زمان ها هم اتفاق میفته کوئری خیلی مهمی هم هست ولی نمی دونم چرا اینطوری هست که بگیر نگیر داره
میخواستم بببینم چطوری میتونم لاگ این کوئری خاص رو داشته باشم که وقتایی که درج انجام نمیشه ببینم چه اروری داده که نتونسته درج کنه
نکته اینکه از pdo استفاده شده و php خام هست.


Javad Ezaz
تخصص : برنامه نویس php و لاراول
@sjavadez 3 سال پیش مطرح شد
1

@amnhck123
با سلام
میتونید از پروفایلر دیتابیس استفاده کنید با توجه به نوع دیتابیستون سرچ کنید مثلا

mysql profiler

اگه از لاراول استفاده میکنید میتونید با استفاده از کد زیر کوئری لاگ رو فعال کنید

DB::connection()->enableQueryLog();

و با استفاده از کد زیر لاگ رو ببینید :

dd(DB::getQueryLog());

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

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