Tanpa opcache, PHP membaca dan mengompilasi setiap berkas pada setiap permintaan - pekerjaan yang sama, ribuan kali semenit, untuk berkas yang tak berubah. opcache menyimpan bentuk terkompilasinya di memori. Biasanya inilah perbaikan tunggal terbesar yang tersedia, dan ia hanya satu pengaturan.
opcache.enable=1
opcache.memory_consumption=192
opcache.max_accelerated_files=20000
opcache.validate_timestamps=1
opcache.revalidate_freq=2
Pastikan ia memang menyala
php -i | grep -E 'opcache.enable|opcache.memory'
# or, in a page you can reach:
print_r(opcache_get_status()['opcache_statistics']);
- opcache_hit_rate di bawah 95% - memory_consumption-nya terlalu kecil dan ia mengusir berkas yang nanti diperlukannya lagi.
- num_cached_keys mendekati max_accelerated_files - naikkan batas berkasnya; kerangka yang besar punya lebih banyak berkas daripada yang diizinkan bawaan.
Apa yang TIDAK dikerjakannya
Ia menyinggahkan kode terkompilasi, bukan hasil. Kueri yang lambat tetap sama lambatnya meski opcache menyala. Kalau halaman Anda lambat karena apa yang ditanyakannya kepada basis data, ini tak mengubah apa pun - dan itulah kekecewaan yang paling sering.
Pengaturan yang menyembunyikan sebuah penerapan
opcache.validate_timestamps=0 lebih cepat dan artinya PHP tak pernah memeriksa apakah sebuah berkas berubah. Penerapan Anda keluar dan situsnya terus menyajikan kode lama, tanpa galat di mana pun. Kalau Anda menyetelnya, penerapan Anda WAJIB mengosongkan singgahannya.# after deploying, with validate_timestamps=0
cachetool opcache:reset
# or reload the pool
systemctl reload php8.3-fpm
Di hosting EGPHP, opcache menyala dan disetel untuk kolamnya. Halaman ini untuk VPS yang Anda jalankan sendiri.