بعد از این درس دقیقاً چه بلدی؟
- موضوع «Latency» را با زبان ساده برای فرد دیگری توضیح میدهی.
- مثال همین درس را خطبهخط میخوانی و خروجی آن را پیشبینی میکنی.
- کد را تغییر میدهی، نتیجه یا ساختار آن را بررسی میکنی و خطا را مرحلهای اصلاح میکنی.
پیداکردن گلوگاه جاده
قبل از ساخت پل تازه باید بدانیم کدام تقاطع واقعاً ترافیک دارد؛ حدس ممکن است هزینه را در محل اشتباه مصرف کند.
بهینهسازی باید از اندازهگیری شروع شود. Profiler زمان و حافظه را به بخشها نسبت میدهد و OPcache Bytecode کامپایلشده را نگه میدارد تا فایلها در هر درخواست دوباره Parse نشوند.
چرا مهم است؟ این مفهوم یکی از آجرهای مسیر حرفهای PHP است. فعلاً لازم نیست همه جزئیات را حفظ کنی؛ باید دلیل استفاده و اثر هر خط را بفهمی.
اولین تمرین تو: Profiling نشان میدهد ۷۰٪ زمان در Query تکراری است؛ ابتدا Query اصلاح میشود و سپس تنظیم OPcache بررسی میگردد.
اول بفهم، بعد کد بنویس
Latency
زمان پاسخ یک عملیات یا درخواست است.
Throughput
تعداد عملیات قابل انجام در واحد زمان است.
OPcache
Bytecode PHP را در حافظه مشترک Cache میکند.
کاهش زمان پاسخ صفحه محصول
Profiling نشان میدهد ۷۰٪ زمان در Query تکراری است؛ ابتدا Query اصلاح میشود و سپس تنظیم OPcache بررسی میگردد.
قطعهها را به ترتیب درست بچین
روی هر قطعه بزن تا وارد پاسخ شود؛ برای برگرداندن دوباره روی آن بزن. با دکمههای جابهجایی هم میتوانی بدون کشیدن و رهاکردن ترتیب را اصلاح کنی.
کد را کامل کن و ساختار آن را بررسی کن
این درس وارد قابلیتهای سروری یا حرفهای شده است. برای امنیت سایت، کد دلخواه روی سرور اجرا نمیشود؛ بررسیگر، وجود اجزای ضروری و منطق مورد انتظار را کنترل میکند و راهنمای اصلاح میدهد.
کد را کامل کن و «بررسی ساختار» را بزن.
این مثال خطبهخط چه میگوید؟
فعلاً حفظ نکن؛ هر خط را به یک جمله ساده تبدیل کن.
- 1
; php.ini production exampleاین خط بخشی از منطق اصلی مثال است؛ نامها و علامتها را از راست به چپ، بخشبهبخش بخوان.
- 2
opcache.enable=1این خط بخشی از منطق اصلی مثال است؛ نامها و علامتها را از راست به چپ، بخشبهبخش بخوان.
- 3
opcache.memory_consumption=192این خط بخشی از منطق اصلی مثال است؛ نامها و علامتها را از راست به چپ، بخشبهبخش بخوان.
- 4
opcache.interned_strings_buffer=16این خط بخشی از منطق اصلی مثال است؛ نامها و علامتها را از راست به چپ، بخشبهبخش بخوان.
- 5
opcache.max_accelerated_files=20000این خط بخشی از منطق اصلی مثال است؛ نامها و علامتها را از راست به چپ، بخشبهبخش بخوان.
- 6
opcache.validate_timestamps=0این خط بخشی از منطق اصلی مثال است؛ نامها و علامتها را از راست به چپ، بخشبهبخش بخوان.
راهنماییها مرحلهای هستند؛ اول خودت پیام خطا را بخوان.
TTFB، زمان Query و Cache hit را پیش و پس از تغییر ثبت کن.
از ساده به چالشی، بدون پرش
یکی از مقدارهای مثال را عوض کن، خروجی را روی کاغذ حدس بزن و سپس بررسی کن.
TTFB، زمان Query و Cache hit را پیش و پس از تغییر ثبت کن.
سناریوی «کاهش زمان پاسخ صفحه محصول» را با نامهای واضحتر و یک حالت تازه گسترش بده.
این سه اشتباه را انجام نده
بهینهسازی بدون Baseline
خاموشکردن timestamp بدون فرآیند Deploy برای invalidate
اشتباهگرفتن JIT با درمان عمومی برنامه وب
5 پرسش کوتاه؛ مطمئن شو واقعاً یاد گرفتهای
برای هر پرسش یک پاسخ انتخاب کن. بعد از هر انتخاب، دلیل پاسخ را همانجا میبینی.
OPcache چه چیزی را نگه میدارد؟
کدام توضیح، «Latency» را دقیقتر بیان میکند؟
بهترین قدم بعد از خواندن مثال این درس چیست؟
کدام روش نشان میدهد این درس را واقعاً فهمیدهای؟
کدام رفتار احتمال خطا را در همین موضوع بیشتر میکند؟
درس را فقط وقتی تمام کن که کد را تغییر دادهای
دیدن آموزش کافی نیست؛ یک مقدار را تغییر بده، خروجی را پیشبینی کن و بعد اجرا بزن.