software engineer @ Cafe Bazaar
آیا میشه کد های php رو کامپایل کرد؟!
اگه خیلی مختصر و کوتاه بخوایم جواب بدیم باید بگیم خیر
ولی راه هایی وجود داره که بشه یجورایی این کارو انجام داد و اونم استفاده از یک Bytecode Caching Engine هستش. حالا قضیه چیه ، اسکریپت های php برای اجرا در زمان runtime ابتدا به bytecode کامپایل میشن و در هر بار اجرای یک script این تبدیل زمان بره. خب حالا میشه اومد و این bytecode هارو کش کرد و با این کار سرعت اجرای کد هارو خیلی بالاتر برد.
معرفی یک Bytecode Caching Engine
بیاید نگاهی به OpCache
همون طور که احتمالا حدس زدید : OPcache یک موتور کش است که در PHP تعبیه شده است. وقتی فعال شود ، به طور چشمگیری عملکرد وب سایت هایی را که از PHP استفاده می کنند افزایش می دهد.
برای فعال کردنش هم وارد php.ini بشید و خط زیر رو به انتهای فایل اضافه کنید
opcache.enable=1
و بعدش هم میتونید اون رو تنظیم کنید
opcache.revalidate_freq=60
opcache.validate_timestamps=1
opcache.max_accelerated_files=4000
opcache.memory_consumption=200
اینجا هم یکم درباره ی اینکه هر کدوم چیکار میکنه مینویسم
opcache.revalidate_freq: How often to check script timestamps for updates, in seconds. 0
will result in OPcache checking for updates on every request.
opcache.validate_timestamps: If enabled, OPcache will check for updated scripts every opcache.revalidate_freq seconds.
opcache.max_accelerated_files: The maximum number of keys (and therefore scripts) in the OPcache hash table.
opcache.memory_consumption: The size of the shared memory storage used by OPcache, in megabytes.
و اگر بخوام مثال بالا رو توضیح بدم باید بگم که ما با opcache.validate_timestamps=1 گفتیم که به opcache.revalidate_freq=5 توجه کن یعنی هر ۶۰ ثانیه یک بار بیا و اپدیت کن کش رو در صورت نیاز , با opcache.max_accelerated_files=4000 داریم میگیم که نهایتا ۴۰۰۰ تا فایل php رو میتونی کش کنی bytecode شون رو و با opcache.memory_consumption=200 میگیم که نهایتا ۲۰۰ مگ از فضا رو میتونه استفاده کنه
همین و اینکه
امیدوارم که این مطلب مفید واقع شده باشه ...
مطلبی دیگر از این انتشارات
اضافه کردن Swagger به پروژه ASP.NET Core
مطلبی دیگر از این انتشارات
طراحی دیتابیس و کشیدن ERD
مطلبی دیگر از این انتشارات
چرا لاراول بهترین فریمورک PHP است؟