OPcache: Caching Bytecode
Aktifkan dan sesuaikan OPcache untuk menghilangkan beban kompilasi skrip berulang.
OPcache: Caching Bytecode adalah pelajaran PHP Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar PHP Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus PHP Academy mencakup 4 pelajaran total.
Cara Kerja PHP Biasanya
Tanpa OPcache, setiap permintaan menyebabkan PHP melakukan hal berikut: membaca berkas .php dari disk, menguraikannya menjadi AST, mengompilasinya menjadi kode operasi (kode bita), lalu menjalankan kode operasi tersebut.
Fungsi OPcache
OPcache menyimpan kode operasi yang telah dikompilasi di memori bersama. Pada permintaan berikutnya, PHP melewati langkah penguraian dan kompilasi — langsung menjalankan kode tersebut.
Dampak terhadap Kinerja
OPcache biasanya memberikan peningkatan throughput 2–5 kali untuk aplikasi PHP tanpa memerlukan perubahan kode.
Mengaktifkan OPcache
OPcache disertakan dalam PHP 5.5+ dan diaktifkan secara bawaan di banyak distribusi. Periksa dengan php -m | grep -i opcache.
# php.ini:
[opcache]
zend_extension=opcache.so
opcache.enable=1
opcache.enable_cli=0Pengaturan Utama OPcache
Sesuaikan pengaturan berikut untuk produksi:
# php.ini:
opcache.memory_consumption=256 ; MB of shared memory
opcache.interned_strings_buffer=16 ; MB for interned strings
opcache.max_accelerated_files=20000 ; max scripts to cache
opcache.validate_timestamps=0 ; disable for production!
opcache.revalidate_freq=0 ; how often to check timestampsvalidate_timestamps=0
Dalam produksi, tetapkan validate_timestamps=0 untuk menonaktifkan pemeriksaan sistem berkas pada setiap permintaan — PHP akan selalu menggunakan kode operasi yang tersimpan dalam cache. Setelah penerapan, setel ulang cache.
Menyetel Ulang OPcache
Kosongkan cache setelah menerapkan kode baru.
<?php
opcache_reset(); // from a PHP script
// Or restart PHP-FPM:
$ kill -USR2 $(cat /run/php-fpm.pid)opcache_get_status()
Ambil statistik OPcache saat waktu berjalan untuk memantau rasio hit dan penggunaan memori.
<?php
$status = opcache_get_status();
echo "Hit rate: ".$status["opcache_statistics"]["opcache_hit_rate"]."%";Pemuatan Awal (PHP 7.4+)
Pemuatan awal OPcache memuat berkas kerangka kerja ke memori bersama saat server dimulai — bahkan menghilangkan overhead kompilasi pada permintaan pertama untuk kelas inti.
# php.ini:
opcache.preload=/srv/app/preload.php
opcache.preload_user=www-dataKompilasi JIT (PHP 8.0+)
PHP 8 memperkenalkan kompilasi JIT (tepat waktu) di atas OPcache, yang mengubah kode operasi menjadi kode mesin asli. Manfaatnya paling besar untuk tugas yang intensif CPU dan kecil untuk aplikasi web biasa yang terikat I/O.
# php.ini:
opcache.jit_buffer_size=100M
opcache.jit=1255Kelas yang Tidak Dapat Diubah
OPcache dapat menggunakan bersama string yang diinternalkan dan definisi kelas yang tidak dapat diubah di antara proses pekerja — sehingga mengurangi konsumsi memori per proses.
Ringkasan
Aktifkan OPcache dalam produksi dengan validate_timestamps=0. Kosongkan cache setelah penerapan menggunakan opcache_reset() atau memulai ulang PHP-FPM. Pantau rasio hit dengan opcache_get_status().
Pemeriksaan Cepat
Pengaturan php.ini apa yang harus bernilai 0 dalam produksi untuk kinerja OPcache maksimum?
Pertanyaan yang Sering Diajukan
Apakah pelajaran “OPcache: Caching Bytecode” gratis?
Ya — teks lengkap “OPcache: Caching Bytecode” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus PHP Academy, upgrade ke CoddyKit PRO. Kursus PHP Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “OPcache: Caching Bytecode”?
Aktifkan dan sesuaikan OPcache untuk menghilangkan beban kompilasi skrip berulang. Kamu berlatih PHP Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai PHP Academy?
Tidak diperlukan pengalaman sebelumnya. PHP Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.
Berapa lama pelajaran “OPcache: Caching Bytecode” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran PHP Academy ini?
Ya. Setiap pelajaran PHP Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Membuat Profil PHP dengan Xdebug
- OPcache: Caching Bytecode
- Mengoptimalkan Kueri Basis Data
- Manajemen Memori dan Kiat Performa