با OPcache آشنا شوید
ﺯﻣﺎﻥ ﻣﻄﺎﻟﻌﻪ: 7 دقیقه

با OPcache آشنا شوید

OPcache یک سیستم کشینگ است که اسکریپت‌های از پیش کامپایل شده را در حافظه سرور ذخیره می‌کند، هدف از انجام چنین کاری در نهایت بارگذاری سریع‌تر یک وبسایت است. این سیستم کشینگ مختص به زبان برنامه نویسی PHP ایجاد شده است، بنابراین شما تنها در ساختار این زبان می‌توانید از این سیستم استفاده بکنید.

در این مقاله آموزشی از وبسایت راکت قصد داریم شما را با OPcache آشنا کرده و در ارتباط با مفاهیم پایه‌ای و همچنین دلیل اهمیت خود OPcache صحبت کنیم. این مطلب آموزشی یک مقاله با ارزش بوده و برای اولین بار است که در مجموعه آموزشی راکت در ارتباط با آن مقاله‌ای نوشته خواهد شد.

منظور از کشینگ چیست؟

کشینگ سیستمی جدید نبوده و برای سال‌های بسیار زیادی‌ست که با استفاده از تکنیک‌های مختلفی پیاده‌سازی می‌شود. هدف نهایی کشینگ این است که وبسایت شما را سریع‌تر بارگذاری کرده و کاربران بتوانند در مدت زمان کمتری وبسایت شما را مشاهده کنند. به صورت کلی کاری که کشینگ انجام می‌دهد این است که محتوای رندر شده یک صفحه وب را روی حافظه سرور ذخیره کرده و در بازدیدهای بعدی محتوای آماده شده را سریع‌تر تحویل می‌دهد.

می‌توانیم این موضوع را با یک مثال نیز توضیح بدهیم. اگر شما جدول ضرب را حفظ کرده باشید سریع‌تر می‌توانید به سوال ۸*۸ پاسخ دهید و یا اینکه هر بار سراغ کاغذ مربوط به جدول ضرب بروید؟ این حالت نیز درست به همین شکل است.

کشینگ نیز به همین شکل است. محتوا به جای آنکه تمام مسیر سرور و رندر و... را طی کند از حافظه سرور بارگذاری می‌شود. در این حالت است که وبسایت شما با سرعت بسیار بیشتری لود خواهد شد.

OPcache چیست؟

OPcache یک Opcode است که از حافظه اشتراکی برای ذخیره اسکریپت‌های از پیش کامپایل شده PHP برای تسریع انجام عملیات‌ها استفاده می‌کند. OPcache از نسخه 5.5 در PHP پیاده‌سازی شد و از آن به بعد در نسخه‌های جدید‌تر نیز توسعه یافت.

مطابق با مستندات خود وبسایت php.net: سیستم OPcache کارایی و روند اجرایی وبسایت‌های مبتنی بر PHP را با ذخیره کردن اسکریپت‌های از پیش کامپایل شده بسیار بهبود می‌بخشد. فرایند انجام این کار نیز بسیار ساده است، ما دیگر برای هر درخواست نیازی نداریم که از اول PHP را ترجمه و تفسیر کنیم.

بعد از آنکه شما یک کد مبتنی بر PHP را برای اجرا ارسال کردید، کدهای خوانا شما به یکسری کد ماشین تبدیل شده و کل فرایند کامپایل کردن یکجا انجام خواهد شد. براساس همین موضوع اگر هر بار شما برای یک صفحه درخواستی را ارسال کنید تمام این مراحل از ابتدا انجام شده و در نهایت باعث تجربه کردن یکسری مشکلات در زمینه کارایی و سرعت اپلیکیشن خواهید شد.

در حالیکه اگر شما OPcache را روی سرور خود فعال کرده باشید این پروسه تنها یک بار انجام شده و با هر درخواست تنها اسکریپت‌های از پیش کامپایل شده لود خواهند شد. تنها زمانی این اسکریپت‌های از پیش کامپایل شده نیز حذف و جایگزین خواهند شد که در سورس کد اصلی تغییراتی اتفاق بیافتد.

این موضوع تاثیر بسیار عظیمی روی بهبود کارایی اپلیکیشن شما خواهد گذاشت.

چرا باید از OPcache استفاده کرد؟

OPcache یک افزونه PHP به حساب می‌آید که به صورت کلی، پرفورمنس و کارایی یک اپلیکیشن مبتنی بر این زبان برنامه نویسی را بهبود بخشیده و سرعت اجرای آن را چند برابر می‌کند.

تصور کنید یک وبسایت در لحظه ۵ الی ۱۰ کاربر داشته و تمام این افراد درخواست برای بازدید از یک صفحه را ارسال می‌کنند. در این حالت برای هر کاربر باید پروسه کامپایل کدها انجام داده شود. خُب حقیقتا برای ۵ الی ۱۰ کاربر چندان فشاری به سرور نخواهد آمد اما برای ۵۰۰ الی ۱۰۰۰ کاربر چه؟ برای ۱۰۰۰۰ نفر چه؟ در این صورت است که ۱۰۰۰۰ بار انجام دادن پروسه کامپایل می‌تواند سرور شما را حسابی مشغول کند.

حال تصور کنید بجای کامپایل کردن، سرور تنها وظیفه لود کردن یکسری اطلاعات از حافظه را داشته باشد! در این صورت است که سرور به خوبی می‌تواند این سناریو را تحمل کرده و همه چیز را به خوبی مدیریت کند.

در یک آزمایش عملی، یک سرور از وبسایت Digitalocean با 1GB RAM و یک 1 CPU توانسته بدون فعال سازی OPcache در هر ثانیه ۱۰ درخواست را مدیریت کند، این درحالیست که در زمان فعال بودن OPcache این مقدار ۳۴ بوده است.

OPcache چگونه کار می‌کند؟

هر زمان که درخواستی برای اجرای یک اسکریپت PHP ارسال شود، این اسکریپت به opcode تبدیل شده و درنهایت توسط Zend Engine اجرا می‌شود. این موضوع را بگویم که فرایند اجرا شدن کدهای PHP به نسبت زبان‌هایی مانند جاوا و سی شارپ متفاوت است.

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

در زیر می‌توانید یک فلوچارت از فرایند انجام کارهای OPcache را مشاهده کنید:

 

OPcache در مقابل APC

APC یک سیستم کشینگ نسبتا قدیمی تر بود که به صورت یک افزونه رایگان و متن باز برای PHP توسط خود Zend عرضه شد. البته یک روش دیگر نیز وجود داشت و آن استفاده از سیستم کشینگ Xcache بود.

APC به خوبی می‌توانست کارها را انجام دهد اما برخلاف OPcache یک مشکل داشت و آن این بود که با نسخه‌های جدید PHP مشکل داشت و نمی‌شد براحتی آن‌ها را با همدیگر سازگار کرد. بعد از پیشرفت‌های مختلف APC نیز در کنار OPcache توسط Zend با نسخه‌های جدیدتر پی‌اچ‌پی منتشر شد اما باز هم نتوانست با نسخه‌های جدیدتر چندان سازگاری داشته باشد.

اما Xcache یک مورد مستقل بوده و به عنوان جایگزین OPCahce معرفی شده است.

در حال حاضر خوشبختانه برای نصب کردن OPcache نیازی نیست کار خاصی را انجام دهید چرا که با نسخه‌های PHP 5.5 و بالاتر این افزونه به صورت پیشفرض نصب شده است.

در پایان

به صورت کلی OPcache یک افزونه و روش بسیار قدرتمند و سریع برای کش کردن اسکریپت‌های از پیش کامپایل شده PHP است. از این جهت اگر در محیط تولید اپلیکیشن از PHP استفاده می‌کنید حتما به یاد داشته باشید که از این افزونه استفاده کنید.

اگر از افرادی هستید که قصد یادگیری کامل PHP را دارید و می‌خواهید به یک توسعه دهنده حرفه‌ای این زبان برنامه نویسی تبدیل شوید ما دوره‌های آموزشی صفر تا صد پی اچ پی در وبسایت راکت را به شما پیشنهاد می‌دهیم.

چه امتیازی برای این مقاله میدهید؟

خیلی بد
بد
متوسط
خوب
عالی
4.67 از 3 رای

/@arastoo
ارسطو عباسی
کارشناس تولید و بهینه‌سازی محتوا

کارشناس ارشد تولید و بهینه‌سازی محتوا و تکنیکال رایتینگ - https://arastoo.net

دیدگاه و پرسش

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

در حال دریافت نظرات از سرور، لطفا منتظر بمانید

در حال دریافت نظرات از سرور، لطفا منتظر بمانید