PHP 5.5 telah dirilis dan fitur modul caching kode baru yang disebut OPCache, tetapi tampaknya tidak ada dokumentasi untuk itu.
Jadi di mana dokumentasi untuknya dan bagaimana cara menggunakan OPcache?
PHP 5.5 telah dirilis dan fitur modul caching kode baru yang disebut OPCache, tetapi tampaknya tidak ada dokumentasi untuk itu.
Jadi di mana dokumentasi untuknya dan bagaimana cara menggunakan OPcache?
Jawaban:
OpCache dikompilasi secara default di PHP5.5 +. Namun itu dinonaktifkan secara default. Untuk mulai menggunakan OpCache di PHP5.5 +, Anda harus mengaktifkannya terlebih dahulu. Untuk melakukan ini, Anda harus melakukan yang berikut.
Tambahkan baris berikut ke Anda php.ini
:
zend_extension=/full/path/to/opcache.so (nix)
zend_extension=C:\path\to\php_opcache.dll (win)
Perhatikan bahwa ketika path berisi spasi Anda harus membungkusnya dengan tanda kutip:
zend_extension="C:\Program Files\PHP5.5\ext\php_opcache.dll"
Juga perhatikan bahwa Anda harus menggunakan zend_extension
arahan alih-alih direktif "normal" extension
karena itu mempengaruhi mesin Zend yang sebenarnya (yaitu hal yang menjalankan PHP).
Saat ini ada empat fungsi yang dapat Anda gunakan:
opcache_get_configuration()
:Mengembalikan array yang berisi konfigurasi yang digunakan OpCache saat ini digunakan. Ini termasuk semua pengaturan ini serta informasi versi dan file daftar hitam.
var_dump(opcache_get_configuration());
opcache_get_status()
:Ini akan mengembalikan array dengan informasi tentang status cache saat ini. Informasi ini akan mencakup hal-hal seperti: keadaan cache (diaktifkan, restart, penuh dll), penggunaan memori, klik, kehilangan dan beberapa informasi yang lebih berguna. Ini juga akan berisi skrip yang di-cache.
var_dump(opcache_get_status());
opcache_reset()
:Mereset seluruh cache. Berarti semua skrip cache yang mungkin akan diuraikan lagi pada kunjungan berikutnya.
opcache_reset();
opcache_invalidate()
:Membatalkan skrip cache tertentu. Artinya skrip akan diuraikan lagi pada kunjungan berikutnya.
opcache_invalidate('/path/to/script/to/invalidate.php', true);
Ada beberapa GUI yang dibuat untuk membantu memelihara OpCache dan menghasilkan laporan yang bermanfaat. Alat-alat ini memanfaatkan fungsi-fungsi di atas.
OpCacheGUI
Penafian Saya penulis proyek ini
Fitur:
Tangkapan layar:
URL: https://github.com/PeeHaa/OpCacheGUI
opcache-status
Fitur:
Tangkapan layar:
URL: https://github.com/rlerdorf/opcache-status
opcache-gui
Fitur:
Tangkapan layar:
Karena OPcache dirancang untuk menggantikan modul APC, tidak mungkin untuk menjalankannya secara paralel di PHP. Ini bagus untuk caching opcode PHP karena tidak mempengaruhi bagaimana Anda menulis kode.
Namun itu berarti bahwa jika Anda saat ini menggunakan APC untuk menyimpan data lain (melalui apc_store()
fungsi) Anda tidak akan dapat melakukannya jika Anda memutuskan untuk menggunakan OPCache.
Anda perlu menggunakan pustaka lain seperti APCu atau Yac yang keduanya menyimpan data dalam memori PHP bersama, atau beralih untuk menggunakan sesuatu seperti memcached, yang menyimpan data dalam memori dalam proses terpisah ke PHP.
Selain itu, OPcache tidak memiliki padanan dengan meter kemajuan pengunggahan yang ada di APC. Sebaliknya, Anda harus menggunakan Kemajuan Unggahan Sesi .
Dokumentasi untuk OPcache dapat ditemukan di sini dengan semua opsi konfigurasi yang tercantum di sini . Pengaturan yang disarankan adalah:
; Sets how much memory to use
opcache.memory_consumption=128
;Sets how much memory should be used by OPcache for storing internal strings
;(e.g. classnames and the files they are contained in)
opcache.interned_strings_buffer=8
; The maximum number of files OPcache will cache
opcache.max_accelerated_files=4000
;How often (in seconds) to check file timestamps for changes to the shared
;memory storage allocation.
opcache.revalidate_freq=60
;If enabled, a fast shutdown sequence is used for the accelerated code
;The fast shutdown sequence doesn't free each allocated block, but lets
;the Zend Engine Memory Manager do the work.
opcache.fast_shutdown=1
;Enables the OPcache for the CLI version of PHP.
opcache.enable_cli=1
Jika Anda menggunakan pustaka atau kode yang menggunakan anotasi kode, Anda harus mengaktifkan simpan komentar:
opcache.save_comments=1
Jika dinonaktifkan, semua komentar PHPDoc dikeluarkan dari kode untuk mengurangi ukuran kode yang dioptimalkan. Menonaktifkan "Komentar Doc" dapat merusak beberapa aplikasi dan kerangka kerja yang ada (mis. Doctrine, ZF2, PHPUnit)
Saya akan memasukkan dua sen saya untuk apa yang saya gunakan opcache.
Saya telah membuat kerangka kerja yang luas dengan banyak bidang dan metode validasi dan enum untuk dapat berbicara dengan basis data saya.
Tanpa opcache
Saat menggunakan skrip ini tanpa opcache dan saya mendorong 9000 permintaan dalam 2,8 detik ke server apache, maka maks. Keluar pada 90-100% cpu selama 70-80 detik hingga memenuhi semua permintaan.
Total time taken: 76085 milliseconds(76 seconds)
Dengan opcache diaktifkan
Dengan opcache diaktifkan, beroperasi pada waktu cpu 25-30% selama sekitar 25 detik dan tidak pernah melewati penggunaan cpu 25%.
Total time taken: 26490 milliseconds(26 seconds)
Saya telah membuat file blacklist opcache untuk menonaktifkan caching semua kecuali kerangka yang semuanya statis dan tidak perlu mengubah fungsionalitas. Saya memilih secara eksplisit untuk hanya file kerangka sehingga saya dapat mengembangkan tanpa khawatir tentang memuat ulang / memvalidasi file cache. Setelah semuanya di-cache menghemat satu detik dari total permintaan25546 milliseconds
Ini secara signifikan memperluas jumlah data / permintaan saya dapat menangani per detik tanpa server bahkan berkeringat.
zend_extension=php_opcache.dll; opcache.memory_consumption=128; opcache.interned_strings_buffer=8; opcache.max_accelerated_files=4000; opcache.revalidate_freq=60; opcache.fast_shutdown=1; opcache.enable_cli=1; opcache.blacklist_filename="C:\xampp\php\cfg\opcache.blacklist;
Cukup ganti; dengan enter di file ini. Tapi inilah yang saya gunakan. sebagian besar barang bawaan
opcache.revalidate_freq=60;
menentukan berapa lama file dapat hidup dalam memori dalam hitungan detik. ketika waktu habis itu mengkompilasi ulang file.
opcache.revalidate_freq
kontrol seberapa sering skrip diperiksa untuk perubahan (berdasarkan apakah timestamp-nya berubah). Jadi jika stempel waktu skrip tetap sama dengan terakhir kali kompilasi, skrip tidak akan dikompilasi ulang. Semua ini dengan asumsi Anda belum mengubah opcache.validate_timestamps
pengaturan, yang diaktifkan secara default.
Dengan PHP 5.6 di Amazon Linux (harus sama dengan RedHat atau CentOS):
yum install php56-opcache
dan kemudian restart apache.
Saya mengalami ini ketika mengatur moodle. Saya menambahkan baris berikut dalam file php.ini.
zend_extension=C:\xampp\php\ext\php_opcache.dll
[opcache]
opcache.enable = 1
opcache.memory_consumption = 128
opcache.max_accelerated_files = 4000
opcache.revalidate_freq = 60
; Required for Moodle
opcache.use_cwd = 1
opcache.validate_timestamps = 1
opcache.save_comments = 1
opcache.enable_file_override = 0
; If something does not work in Moodle
;opcache.revalidate_path = 1 ; May fix problems with include paths
;opcache.mmap_base = 0x20000000 ; (Windows only) fix OPcache crashes with event id 487
; Experimental for Moodle 2.6 and later
;opcache.fast_shutdown = 1
;opcache.enable_cli = 1 ; Speeds up CLI cron
;opcache.load_comments = 0 ; May lower memory use, might not be compatible with add-ons and other apps
extension=C:\xampp\php\ext\php_intl.dll
[intl]
intl.default_locale = en_utf8
intl.error_level = E_WARNING
opcache.fast_shutdown = 0
github.com/zendtech/ZendOptimizerPlus/issues/146