آیا میشه کد های 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 میگیم که نهایتا ۲۰۰ مگ از فضا رو میتونه استفاده کنه

همین و اینکه

امیدوارم که این مطلب مفید واقع شده باشه ...