سلام.
چرا Yii2 هربار عملیات لاگین رو انجام میده ؟ به ازای هر درخواست ؟
به این کد دقت کنید ( فایل config )
اولین print خالی هست اما دومین print نه و آیدی کاربر در __id ذخیره شده.
اگر مجددا رفرش کنید،بازم همینطور هست.اولین print خالی هست اما دومین print نه.
یعنی هربار داره این عملیات رو انجام میده! چرا نباید چک بکنه که اگر session وجود نداشت،این کار انجام بشه؟! خیلی بهتر از این هست هربار انجام بشه!
و اگر شما در فایل ایندکس ( ورودی فریمورک ) خط آخر memory_get_usage رو ببینید،این isGuest حجمی بیش از 500 کیلوبایت در رم داره! چون عملیات لاگین انجام میشه،اینکه کاربر لاگین هست یا نه. با خوندن سورس کد هم متوجه میشید.
یعنی اختلاف بودن و نبودنش بین 500 تا 700 کیلوبایت حافظه مصرف میکنه.
مرگباره این سناریو!
چرا Yii2 هربار عملیات لاگین رو انجام میده ؟ به ازای هر درخواست ؟
به این کد دقت کنید ( فایل config )
'on beforeAction' => function ($event) { session_start(); echo '<pre>'; print_r($_SESSION); Yii::$app->user->isGuest; print_r($_SESSION); }
اولین print خالی هست اما دومین print نه و آیدی کاربر در __id ذخیره شده.
اگر مجددا رفرش کنید،بازم همینطور هست.اولین print خالی هست اما دومین print نه.
یعنی هربار داره این عملیات رو انجام میده! چرا نباید چک بکنه که اگر session وجود نداشت،این کار انجام بشه؟! خیلی بهتر از این هست هربار انجام بشه!
و اگر شما در فایل ایندکس ( ورودی فریمورک ) خط آخر memory_get_usage رو ببینید،این isGuest حجمی بیش از 500 کیلوبایت در رم داره! چون عملیات لاگین انجام میشه،اینکه کاربر لاگین هست یا نه. با خوندن سورس کد هم متوجه میشید.
یعنی اختلاف بودن و نبودنش بین 500 تا 700 کیلوبایت حافظه مصرف میکنه.
مرگباره این سناریو!