سعید محمدی
1 سال پیش توسط سعید محمدی مطرح شد
8 پاسخ

سوال مهم و مشکل عجیب در مورد سشن های لاراول

از دوستان عزیز ممنون میشم راهنمایی کنند که چرا لاراول به ازای هر بازدید از سایت یک سشن درست میکنه و اگر من تایم منقضی سشن رو مثلا یک هفته بزارم و تعداد بازدید سایت زیاد بشه تعداد خیلی زیادی فایل سشن درست میکنه که اکثرا بلا استفاده هستند و حجم زیادی رو در پوشه storage\framework\sessions ذخیره میکنند
سوال اولم اینه که چجوری میشه گفت که فقط کاربری که لاگین کرده یا سبد خرید داره ساخته میشه براش سشن ایجاد کن نه برای هر بازدید

سوال دومم اینه که گزینه زیر رو فعال کردم ولی با بسته شدن مرورگر ، چرا سشن کاربر حذف نمیشه ؟

'expire_on_close' => true,

سوال سومم اینه که با تنظیم کردن مقدار زیر به یک دقیقه حتی بعد از چند دقیقه چه با بستن مرورگر چه بدون اون سشن مورد نظر کاربر ازپوشه سشن ها حذف نمیشه

'lifetime' => 1,

و سوال آخرم اینه که من چهار بار مرورگر رو باز و بسته کردم و به ازای هر بار یک سشن جدید برای همون مرورگر و همون ip و همون سیستم با نام های جدید ایجاد شد که نه با تنظیم کردن تایم به یک دقیقه حذف میشن نه با بسته شدن مروگر اینطوری که اصلا فضای هاست پر میشه فایل ها بصورت زیر هستند

huIsNddVUSPTJV2KL2xfW9nrsANtuhcGldnycbv5
RcBXY1eOZmsQp02NJnbmadVfiJtcjMQpgmvsFZfc
yaqZXra7aEIwY8VyayiagHxvWQc3cmmFCsjgxk3q
z7pXAa9OUaDUG1U13iMFwO7BwWWXGGzb0PezWe68

این موارد رو در لوکال با وب سرور لاراگون و لاراول 10 در مرورگر های مختلف تست گرفتم و پروژه لاراول خام خام و تازه نصب شده و هیچی هم بهش اضافه نشده همین که نصب شد اجرا کردم تا این مشکل رو بررسی کنم

ممنون میشم از دوستان راهنمایی کنن

سپاس


ثبت پرسش جدید
سعید محمدی
@saeiidm 1 سال پیش مطرح شد
1

@mahdi.nazari
سلام بالاخره مشکلم حل شد و این مشکل مربوط به خود باگ لاراول تو سشن ها در ورژن 5.2 و بودش و بجاش مجبور شدم از سشن خود
Symfony بجای لاراول استفاده کنم بصورت زیر :

use Symfony\Component\HttpFoundation\Session\Session;
//to set a session variable use
$session = new Session();
$session->set('variableName', $requestData['key']);

//to get that session variable
$session = new Session();
$session->get('variableName');

مهدی نظری
تخصص : توسعه دهنده Front End
@mahdi.nazari 1 سال پیش مطرح شد
1

سلام 🖐
امیدوارم حالت خوب و عالی باشی🙏

سوال اول:
برای تولید سشن‌ها تنها برای کاربران لاگین‌شده یا کاربرانی که سبد خرید دارن، می‌توانی از میانبرهایی مانند Middleware و Event ها استفاده کنی. ایده اصلی اینه که سشن‌ها تنها در زمانی که شرایط خاصی برقرار باشند (مانند وجود کاربر لاگین شده یا سبد خریدی) ایجاد بشن.

سوال دوم:
تنظیم expire_on_close در پیکربندی سشن‌ها تنها برای ایجاد یک سشن تا زمان بستن مرورگر موثره. اگر سشن پس از بستن مرورگر حذف نشه ، احتمالاً مشکلی در تنظیمات یا پیکربندی سرور وجود داره که باید اون بررسی کنی

سوال سوم:
تنظیم lifetime به ثانیه س و به معنای زمان طولانی‌تر مرور سشن می‌شه اگر حتی با تنظیم کردن این مقدار به مدت کوتاه‌تر از دقیقه، سشن‌ها حذف نمی‌شن ، ممکنه تنظیمات دیگری در سرور یا برنامه مشکل ایجاد کرده باشن.

سوال آخر:
این مشکل به‌طور معمول ناشی از تنظیمات مرورگر (کش و کوکی) یا تنظیمات وب‌سرور (مانند Apache یا Nginx) هستش ممکنه تنظیمات این بخش‌ها برای مدیریت سشن‌ها مشکلاتی ایجاد کرد باشن

امیدوارم پاسخم بهت کمک کرده باشه ❤️
موفق و پیروز باشی 🤘🌹


سعید محمدی
@saeiidm 1 سال پیش مطرح شد
1

سلام ممنونم از توضیحات تون @mahdi.nazari


مهدی نظری
تخصص : توسعه دهنده Front End
@mahdi.nazari 1 سال پیش مطرح شد
0

خواهش میکنم ❤️ به جوابت رسیدی بلاخره دوست من ؟


سعید محمدی
@saeiidm 1 سال پیش مطرح شد
مهدی نظری
تخصص : توسعه دهنده Front End
@mahdi.nazari 1 سال پیش مطرح شد
0

خب الان دقیقا کدوم قسمت مشکل باقی مونده همونو بریم جلو ؟


سعید محمدی
@saeiidm 1 سال پیش مطرح شد
0

ممنون از پیگیریت @mahdi.nazari
مشکلم اینه که چرا باید برای بازدیدی که هیچ کاربردی برام نداره سشن اضافه بشه و فقط میخام برای سبد خرید و احراز هویت سشن ایجاد بشه و تا زمانی که این دو اکشن رخ نداده لاراول سشن و ایجاد نکنه و دیتابیس پر نشه از سطرهای سشن بدون استفاده
ولی این مسئله با میدلویر هم جور در نمیاد و لاراول تو هر صفحه ای از سایت هم وارد بشی درجا یک سشن برات میسازه تا اگه لاگین کنی یا هر کاری درون اون سشن قعالیت هاتو مدیریت کنه حالا اومدیم و وب سایت مورد نظر میلیون یوزر هر روز بازدید داره و الکی میلیون رکورد تو جدول ایجاد میشه بی استفاده تا زمان منقضی (و این اتفاق میتونه هر روز رخ بده) که تازه فرض کنیم هیچکدوم نه از سبد خرید استفاده میکنن نه لاگین میکنن
این مشکل اصلی هست


مهدی نظری
تخصص : توسعه دهنده Front End
@mahdi.nazari 1 سال پیش مطرح شد
0

قربانت ❤️

درسته، تعامل با سشن‌ها و ایجاد بیش از حد رکوردهای سشن در دیتابیس ممکنه منجر به مشکلات مصرف منابع و کاهش عملکرد بشه برای حل این مشکل، می‌توانی از روش های زیر استفاده کنی

استفاده از سشن‌های ضروری: اولین کاری که می‌تونی بکنی، اینه که سشن‌ها رو فقط برای کارهای ضروری مثل سبد خرید و ورود به حساب کاربری ایجاد کنی. به این ترتیب، فقط اون موقع که کاربر واقعا بهشون نیاز داشت، ایجاد می‌شن.

زمانبندی انقضاء: می‌تونی زمان انقضای سشن‌ها رو کوتاه‌تر کنی تا زودتر از رکوردهای بی‌استفاده در دیتابیس خلاص بشیم. به جای تنظیمات پیش‌فرض، مقدارهای کوچکتری تعیین کن.

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

از میدلور ها استفاده کن که به اون می‌گن "middleware". اینا بهت کمک می‌کنه که بر اساس عملیاتی مثل لاگین یا افزودن به سبد خرید، تصمیم بگیری که سشن رو ایجاد کنی یا نه.

استفاده از حالت off اگه کاربر هیچ کاری نمی‌کنه که نیاز به سشن داشته باشه، می‌تونی حتی کلاً سشن‌ها رو خاموش کنی تا هیچ رکوردی در دیتابیس ایجاد نشه.

امیدوارم پاسخم بهت کمک کرده باشه ❤️
موفق و پیروز باشی 🤘🌹


سعید محمدی
@saeiidm 1 سال پیش مطرح شد
1

@mahdi.nazari
سلام بالاخره مشکلم حل شد و این مشکل مربوط به خود باگ لاراول تو سشن ها در ورژن 5.2 و بودش و بجاش مجبور شدم از سشن خود
Symfony بجای لاراول استفاده کنم بصورت زیر :

use Symfony\Component\HttpFoundation\Session\Session;
//to set a session variable use
$session = new Session();
$session->set('variableName', $requestData['key']);

//to get that session variable
$session = new Session();
$session->get('variableName');

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

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