💻 آخرین فرصت یادگیری برنامه‌نویسی با آفر ویژه قبل از افزایش قیمت در ۵ آذر ماه (🎁 به همراه یک هدیه ارزشمند )
۰ ثانیه
۰ دقیقه
۰ ساعت
۱ MohammadMoghadasi
چند سوال در مورد داکیومنت 1
جامعه لاراول ایجاد شده در ۰۵ شهریور ۱۳۹۸

سلام

استاد من خوندم تو داکیومنت که public/index.php فایل نقطه ی ورود همه در خواست‌ها به برنامه لاراول هست...

1. سوال اول اینه که این در خواست‌ها منظور همون request‌های هستن که کاربر ارسال می‌کنه؟ یا در خواست هایی که بین خود برنامه رد و بدل میشه ؟

 سوال بعدی اینه که public/index.php بعد از لود کردن autoloader یک نمونه از برنامه رو از bootstrap/app.php دریافت میکنه

2.سوال اینجاست که نمونه application داره از autoloader دریافت میشه یا از public/index.php ?

و بعد اینکه autoloader یک فایلی هست که وظیفه داره قایل‌ها رو include کنه و نیاز نباشه دستی ما این کار رو کنیم ...

3. آیا این انکود کردن یعنی هر بار که یک ریکویست به سمت برنامه ارسال میشه این انکلود‌ها انجام میشه یعنی یک  ؟ یعنی میاد بعد اینکه کاربر لاگین کرد و در خواست لاگین به سمت سرور ارسال شد و یک نمونه از application laravel دریافت میشه ؟(طبق خود نوشته لاراول در داکیومنت) باز یک سوال اینجاست 4.که آیا هر سری یک نمونه از برنامه دریافت میشه یعنی چی دقیقا ؟ یعنی نمونه ساخته میشه و دریافت میشه و یا اینکه نه نمونه ساخته شده قبلا و حالا دریافت میشه !؟ و باز یک سوال اینجاست 5. نمونه دریافت شده چه مقدار حجم داره ؟ و آیا هزینه‌ها (رم و حافظه ...) جواب گوی این نمونه هست ؟ فرض کنید مثلا 1000 درخواست به سمت سرور ایجاد شده و حالا قرار که هر سری از فایل bootsrap/app.php یک نمونه از کل application laravel ساخته بشه ...این حجم خیلی زیادی هست و طبیعتا سرور یا هاست نمیتونه به 1000 نمونه از برنامه بسازه و بعد بیاد درخواست‌ها رو هندل کنه ! اینجا چه اتفاقی می‌افته؟

 

استاد من صفحه ی https://laravel.com/docs/5.8/lifecycle و قسمت First Things  رو خوندم و این همه سوال (: ... به نظر شما باید چیکار کرد؟

 

ببخشید برای طولانی شدن متن .

متشکرم

1 - منظور از درخواست‌های خود برنامه رو متوجه نشدم ... هر درخواستی کاربر ارسال میکنه به سمت سایت شما اولین صفحه ای که لود میشه index.php هستش .. این تنها برای لاراول نیست .. این قانون برای وب سرورهاست .. یعنی همه وب سرورها زمانی که درخواستی رو دریافت میکنند اولین فایلی که صدا میزنند index.php هستش ... 

۲ − autoloader مبحث دیگه ای هستش ... داخل php زمانی که شما میخواید از یک کلاس استفاده کنید باید اول اون کلاس رو include کنید ... با autoloader دیگه شما نیازی به include کردن ندارید ... خودش به صورت اتوماتیک این کار رو انجام میده ... برای اینکه کاربرد autoloader رو متوجه بشید این متن رو بخونید ... 

https://www.sitepoint.com/autoloading-and-the-psr-0-standard/

۳ − به ازای هر ریکوئست یک بار اون فایل index.php اجرا میشه و به طبع یک نسخه از app ساخته میشه ... 

۴ − هر زمان که یک درخواست به سمت برنامه ارسال میشه تمامی این موارد از اول اجرا میشه ... دوباره یک نمونه جدید ساخته میشه و به اینصورت نیست که قبلا ساخته بشه و نگه داشته بشه ... یعنی مثلا اگر شما وارد یک سایت بشید و مثلا بخش مقالات رو کلیک کنید یک بار همه این موارد اجرا میشه ... و مثلا اگر وارد یکی از مقالات بشید دوباره تمام این اتفاقات میوفته ... 

۵ − بله حافظه سرور‌ها کاملا پاسخگو هست ... مشکلی از این لحاظ وجود نداره ... بعد زمانی که هر کاربر درخواستی رو ارسال میکنه و کارها انجام میشه و به کاربر جواب داده میشه تمامی اون آبجکت‌های ساخته شده پاک میشه از روی سرور ... به طبع هرچه یوزرهای شما در یک ثانیه بیشتر بشه شما باید منابع بیشتری دریافت کنید از اون هاست ... میزان درخواست هم به ثانیه محاسبه میشه .. به عنوان مثال ۵۰۰ درخواست در ثانیه که با اصطلاح concurrency شناخته میشه ... 

مشکلی وجود نداره .. اتفاقا خوبه که براتون سوال پیش میاد ... فقط موضوعی که وجود داره اینه که با توجه به این سوالات شما به نظرم موردی که خیلی بیشتر باید روش تمرکز کنید مباحث پایه هست ... مثلا ساختار وب ... اینکه یک درخواست از سمت کلاینت میاد چه مراحلی رو طی میکنه که به ما برسه ... و مباحث مربوط به پایه PHP ... چون قطعا برای کارکردن با لاراول شما باید PHP رو در حد خوبی بلد باشید ... 

مهرداد سامی ۰۷ شهریور ۱۳۹۸، ۱۱:۵۳