Memahami opcache

尊渡假赌尊渡假赌尊渡假赌
Lepaskan: 2025-02-20 08:38:10
asal
858 orang telah melayarinya

Memahami opcache

Takeaways Key

    Opcache adalah enjin caching terbina dalam PHP 5.5 yang menyimpan bytecode skrip precompiled dalam ingatan, yang membawa kepada peningkatan prestasi dalam aplikasi PHP. Ia boleh dipasang sebagai lanjutan pada versi PHP yang lebih lama dan dapat mengurangkan masa tindak balas min laman web sehingga 14%.
  • Opcache adalah penyelesaian yang lebih baik daripada cache APC, kerana APC tidak menyokong versi PHP yang lebih baru dan boleh membawa kepada kesilapan pelaksanaan. Opcache lebih terikat dengan PHP sendiri, mengakibatkan kemas kini yang lebih kerap dan kesilapan yang lebih sedikit. Walau bagaimanapun, tidak seperti APC, Opcache tidak berfungsi sebagai enjin caching data.
  • Untuk memeriksa sama ada opcache berfungsi dengan betul, seseorang boleh menggunakan fungsi opcache_get_configuration () dan opcache_get_status (). Terdapat juga beberapa skrip yang disediakan yang tersedia yang mengambil semua konfigurasi opcache dan status data dan memaparkannya dengan cara yang mesra pengguna.
  • Adalah mungkin untuk mempunyai OPCACHE diaktifkan dalam satu projek dan dilumpuhkan di lain pada pelayan tunggal. Ini dicapai dengan membolehkan Opcache di peringkat global dan kemudian melumpuhkannya dalam projek tertentu menggunakan fungsi ini_set ().
php dalam versi 5.5 dilengkapi dengan enjin caching terbina dalam-opcache-yang menyimpan bait skrip precompiled dalam ingatan. Jika anda biasa dengan APC atau XCACHE, anda akan tahu bagaimana enjin tersebut berfungsi. Oleh kerana setiap skrip PHP sedang dikumpulkan pada masa runtime, sebahagian daripada masa pelaksanaan akan digunakan untuk mengubah kod yang boleh dibaca manusia ke dalam kod yang dapat difahami oleh mesin. Enjin cache bytecode seperti OPCACHE, APC atau XCACHE hanya sekali - semasa pelaksanaan pertama fail PHP tertentu. Kemudian skrip precompiled disimpan dalam ingatan, yang sepatutnya membawa kepada peningkatan prestasi dalam aplikasi PHP anda.

Di atas web, anda dengan mudah akan menemui banyak tutorial yang meliputi semua langkah pemasangan dan konfigurasi Opcache (ia didayakan secara lalai pada 5.5, tetapi boleh dipasang sebagai lanjutan pada versi lama). Baca artikel di bawah untuk mencari jawapan kepada beberapa soalan biasa mengenai aspek praktikal yang berbeza untuk bekerja dengan enjin cache tertentu ini.

1. Adakah Opcache patut dipasang sama sekali? Apa rangsangan kelajuan yang boleh saya harapkan?

Sudah tentu, ia bergantung. Jika pelayan anda berjaya mengendalikan lalu lintas yang masuk dan menyimpan masa tindak balas yang rendah, anda mungkin tidak akan merasakan keperluan untuk bekerja pada prestasi. Tetapi di laman web yang lebih besar dengan banyak trafik setiap langkah pengoptimuman kecil mungkin dikira. Melaksanakan OPCACHE mungkin membolehkan anda mengendalikan lebih banyak permintaan sesaat dan mengembalikan respons lebih cepat daripada tanpa enjin caching bytecode. Oleh kerana Opcache agak mudah dipasang dan dikonfigurasikan, anda tidak akan menghabiskan terlalu banyak masa untuk menetapkan segala -galanya.

Jika anda sedang mencari beberapa ujian prestasi Opcache, anda pasti perlu membaca artikel AppDynamics mengenai melaksanakan enjin cache ini. Dalam ujian mereka, pemasangan Opcache mengurangkan masa tindak balas min laman web sebanyak 14%. Pengurangan masa tindak balas tindakan yang berbeza dari aplikasi web bervariasi dari 6% hingga sebanyak 74%. Seperti yang dijelaskan dalam artikel, bahagian kod yang berbeza mungkin memberi manfaat lebih kurang daripada melaksanakan enjin caching bytecode. Saya menggalakkan anda membaca artikel secara terperinci dan periksa di mana anda boleh mendapatkan peningkatan prestasi tertinggi.

Jika anda mencari beberapa sumber lain mengenai prestasi Opcache, periksa contoh di Fideloper.com dan MassiveCale.com. Kedua -dua ujian melaporkan kira -kira 50% penurunan masa tindak balas selepas memasang OPCACHE.

2. Saya sudah menggunakan cache APC. Sekiranya saya berhijrah ke Opcache?

Saya fikir anda sepatutnya. Terdapat beberapa kelebihan yang boleh menjadikan Opcache penyelesaian yang lebih baik daripada APC.

Pertama sekali, cache APC tidak akan berfungsi dengan versi PHP terbaru. Ia tidak menyokong PHP 5.5 sama sekali. Ia tidak dinasihatkan untuk memasangnya pada Php 5.4 sama ada, kerana telah dilaporkan bahawa konfigurasi tersebut boleh membawa kepada kesilapan pelaksanaan yang memecahkan keseluruhan permohonan. Cukup periksa artikel Wikipedia mengenai PHP Accelerators atau thread limpahan stack ini untuk mendapatkan beberapa butiran.

Opcache, bagaimanapun, dibundel dengan PHP 5.5 jadi ia pasti akan berfungsi dengan versi PHP ini. Seperti yang ditulis dalam dokumentasi, ia juga boleh dipasang dengan versi PHP yang lebih lama - dari 5.2 hingga 5.4. Secara amnya, OPCACHE lebih terikat dengan PHP sendiri daripada enjin cache bytecode lain - yang mungkin mengakibatkan kemas kini yang lebih kerap dan kesilapan yang lebih sedikit (baca di sini untuk maklumat lanjut).

Satu -satunya perkara penting yang perlu diingat apabila berpindah dari APC ke Opcache adalah hakikat bahawa yang terakhir tidak berfungsi sebagai enjin caching data. Jika anda telah melaksanakan APC, anda mungkin menggunakan fungsi APC_ADD () dan APC_Fetch () yang berfungsi sebagai antara muka kepada perkhidmatan caching data. Opcache hanya enjin caching bytecode supaya ia tidak akan menawarkan fungsi yang sama. Jika anda merancang untuk beralih dari APC ke Opcache, ingatlah untuk mempertimbangkan batasan ini. Perlu diingat bahawa jika anda ingin mengekalkan fungsi userland APC, terdapat projek APCU (banyak terima kasih kepada Oscar Merina kerana menunjukkannya dalam komen).

3. Bagaimana untuk memeriksa sama ada opcache sebenarnya caching fail saya?

Jika anda telah memasang dan mengkonfigurasi Opcache, anda mungkin mendapati penting untuk mengawal fail PHP yang sebenarnya di -cache. Enjin cache keseluruhan berfungsi di latar belakang dan telus kepada pelawat atau pemaju web. Untuk memeriksa statusnya, anda boleh menggunakan salah satu daripada dua fungsi yang memberikan maklumat sedemikian: OPCACHE_GET_CONFIGURATION () dan OPCACHE_GET_STATUS (). Nasib baik, terdapat beberapa scrips yang disediakan yang mengambil semua konfigurasi dan data status Opcache dan memaparkannya dengan cara yang mesra. Anda tidak perlu menulis apa -apa kod sendiri, hanya ambil salah satu alat dari ini di bawah:
- Panel Kawalan Opcache,
-Opcache-Status oleh Rasmus Lerdorf,
- Opcachegui oleh Pieter Hordijk,
-Opcache-Gui oleh Andrew Collington.

Dalam projek saya, saya menggunakan skrip Opcache-Gui yang mempunyai semua fungsi yang saya perlukan. Untuk memeriksa sama ada enjin caching berfungsi dengan betul, lihat sahaja peratusan di tab "Gambaran Keseluruhan" di halaman Opcache-Gui. Jika penggunaan memori dan nilai hit kadar lebih besar daripada sifar, ini bermakna OPCACHE adalah cache kod PHP dan fail cache sedang digunakan untuk mengendalikan permintaan. Untuk melihat senarai fail PHP tertentu yang di -cache, hanya navigasi ke tab "Penggunaan Fail". Lihat melalui senarai fail untuk memastikan bahawa fail di dalam projek anda mendapat cache.

Memahami opcache

4. Adakah terdapat konfigurasi khusus kerangka yang harus saya tetapkan?

Pada dasarnya, enjin Opcache harus telus kepada anda sebagai penulis kod. Ini bermakna anda boleh meletakkan sebarang kod yang anda inginkan dalam aplikasi anda (yang berfungsi dengan versi PHP yang anda gunakan) dan OPCACHE harus mengendalikannya dengan betul. Tetapi ia akan berfungsi hanya jika konfigurasi Opcache ditetapkan dengan cara yang betul. Konfigurasi enjin cache yang salah boleh memecahkan seluruh laman web anda.

Pertama sekali, mungkin dalam setiap projek biasa, anda perlu memastikan bahawa pilihan opcache.use_cwd ditetapkan kepada benar. Membolehkan tetapan ini bermakna bahawa enjin Opcache akan melihat laluan fail penuh untuk membezakan antara fail dengan nama yang sama. Menetapkannya kepada palsu akan membawa kepada perlanggaran antara fail dengan nama asas yang sama.

Terdapat juga tetapan yang penting dalam alat dan kerangka yang menggunakan anotasi. Jika anda menggunakan doktrin, Rangka Kerja Zend 2 atau PHP, ingatlah untuk menetapkan tetapan opcache.load_comments dan opcache.save_comments kepada Benar. Hasilnya, komen dokumentasi dari fail anda juga akan dimasukkan ke dalam kod yang dipraktikkan yang dihasilkan oleh OPCACHE. Tetapan ini akan membolehkan anda bekerja dengan anotasi tanpa sebarang gangguan.

Jika projek anda didasarkan pada rangka kerja tertentu atau aplikasi web, ia sentiasa merupakan idea yang baik untuk menyemak dokumentasi untuk sebarang garis panduan mengenai konfigurasi Opcache. Sebagai contoh, terdapat konfigurasi sampel untuk Moodle di sini.

5. Saya menyimpan konfigurasi aplikasi saya dalam fail php. Bolehkah saya mengelakkannya daripada di -cache?

Jika projek anda mengandungi fail yang sedang diubah lebih kerap daripada yang lain, anda boleh mengecualikannya daripada caching. Ia mungkin sangat berguna apabila berurusan dengan fail PHP yang mengandungi arahan konfigurasi untuk laman web anda. Sekiranya anda menghalangnya daripada di -cache, anda boleh memastikan bahawa setiap perubahan dimasukkan ke dalam fail sedemikian akan dapat dilihat dalam permohonan anda dengan segera.

Opcache membolehkan anda menentukan fail senarai hitam yang mengandungi semua laluan yang tidak akan diproses oleh enjin caching. Selepas menetapkan arahan opcache.blacklist_filename, letakkan senarai fail yang betul dalam laluan yang telah anda tentukan. Halaman dokumentasi mengandungi beberapa contoh tentang cara mengecualikan fail tertentu dari cache.

6. Bagaimana saya boleh menjalankan kedua -dua pembangunan dan persekitaran pengeluaran pada pelayan tunggal di mana opcache diaktifkan?

Jika pelayan anda menjalankan beberapa aplikasi, anda mungkin bersedia menggunakan Opcache hanya di sebahagian daripada mereka. Laman pembangunan dan ujian adalah contoh persekitaran sedemikian di mana mempunyai bait bait yang didayakan tidak lebih baik dan boleh menyebabkan lebih banyak kemudaratan daripada yang baik.

Untungnya, mungkin ada OPCache yang didayakan dalam satu projek dan dilumpuhkan di dalam yang lain, semuanya pada satu pelayan. Untuk berbuat demikian, pertama anda perlu mengaktifkan opcache di peringkat global dengan menetapkan Arahan Opcache.enable kepada TRUE dalam fail php.ini anda. Kemudian, jika anda tidak mahu menggunakan caching byteCode dalam salah satu projek anda, lumpuhkannya dengan menetapkan arahan yang sama kepada palsu menggunakan fungsi ini_set (). Oleh itu, pertama -tama anda perlu membolehkan caching di seluruh dunia dan kemudian anda boleh melumpuhkannya dalam beberapa projek "tempatan". Anda tidak boleh melakukan yang bertentangan - membolehkan caching menggunakan ini_set () tidak dibenarkan.

menetapkan opcache.enable untuk palsu dalam fail teratas dalam projek anda akan melumpuhkan caching sambil menyimpannya di tempat lain.

Ringkasan

Saya harap set soalan dan jawapan yang sama memberi anda beberapa maklumat praktikal tentang cara menggunakan OPCACHE dalam aplikasi PHP. Jika anda mempunyai soalan atau komen lain mengenai subjek, jangan ragu untuk menyiarkannya di bawah. Anda juga boleh menghubungi saya melalui Google Plus.

soalan yang sering ditanya mengenai opcache

Apakah fungsi utama OPCACHE dalam PHP? Ini menghapuskan keperluan PHP untuk memuatkan dan menghuraikan skrip pada setiap permintaan, dengan itu mengurangkan masa pelaksanaan dan penggunaan memori. Ini amat bermanfaat untuk laman web dengan aplikasi trafik atau kompleks yang tinggi, kerana ia dapat mempercepatkan masa pemuatan dan meningkatkan prestasi keseluruhan. Mekanisme caching yang menyimpan output skrip PHP, Opcache menyimpan bytecode precompiled skrip PHP. Ini bermakna ia tidak perlu mengkompilasi kod PHP setiap kali permintaan dibuat, yang menjimatkan banyak masa dan sumber pemprosesan. Ini menjadikan OPCACHE penyelesaian yang lebih cekap dan berkesan untuk meningkatkan prestasi PHP.

Bagaimana saya boleh mengaktifkan OPCACHE dalam konfigurasi PHP saya? Cari bahagian yang dilabel [Opcache] dan tukar nilai opcache.enable kepada 1. Jika bahagian atau arahan tidak wujud, anda boleh menambahnya. Setelah membuat perubahan, simpan fail dan mulakan semula pelayan web anda untuk perubahan yang berlaku. Menggunakan fungsi OPCACHE_GET_STATUS () dalam PHP. Fungsi ini mengembalikan pelbagai maklumat mengenai status Opcache, termasuk tetapan konfigurasi, penggunaan memori, dan kadar hit. Anda boleh menggunakan maklumat ini untuk mengesahkan jika Opcache berfungsi dengan betul dan cekap. Php. Fungsi ini akan membersihkan OPCACHE dan memaksa PHP untuk mengkompilasi semula skrip pada permintaan seterusnya. Walau bagaimanapun, perlu diingat bahawa membersihkan opcache dengan kerap boleh memberi kesan negatif terhadap prestasi, kerana ia mengalahkan tujuan caching. Meningkatkan prestasi PHP, ia bukan tanpa isu atau batasan yang berpotensi. Sebagai contoh, ia boleh menyebabkan masalah dengan sesi berasaskan fail atau penyimpanan data pengguna berasaskan fail, kerana ia tidak mengkompilasi skrip melainkan perubahan cap waktu. Juga, ia mungkin tidak berkesan untuk laman web dengan trafik yang rendah atau aplikasi mudah, kerana keuntungan prestasi mungkin tidak dapat dilihat.

Bagaimana saya boleh mengoptimumkan konfigurasi Opcache untuk prestasi maksimum? Sebagai contoh, anda boleh meningkatkan opcache.memory_consumption untuk memperuntukkan lebih banyak memori untuk menyimpan bytecode precompiled. Anda juga boleh menyesuaikan opcache.revalidate_freq untuk mengawal berapa kerap Opcache untuk perubahan dalam skrip. Walau bagaimanapun, ia disertakan secara lalai pada PHP 5.5. Untuk versi terdahulu, anda perlu memasangnya sebagai lanjutan PECL. Redis. Walaupun OPCACHE meningkatkan prestasi PHP dengan caching bytecode precompiled, mekanisme caching lain dapat meningkatkan prestasi dengan caching pertanyaan pangkalan data atau output skrip PHP. 🎜>

opcache sangat bermanfaat untuk laman web dengan trafik yang tinggi atau aplikasi yang kompleks, kerana ia dapat mempercepat pemuatan masa dan meningkatkan prestasi keseluruhan. Walau bagaimanapun, ia mungkin tidak berkesan untuk laman web dengan trafik yang rendah atau aplikasi mudah, kerana keuntungan prestasi mungkin tidak dapat dilihat. Juga, ia boleh menyebabkan masalah dengan sesi berasaskan fail atau penyimpanan data pengguna berasaskan fail, jadi ia tidak sesuai untuk semua jenis laman web atau aplikasi.

Atas ialah kandungan terperinci Memahami opcache. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan