


Artikel yang menerangkan prinsip dan penggunaan PHP opcache secara terperinci
Artikel ini membawakan anda pengetahuan yang berkaitan tentang opcache PHP terutamanya bercakap tentang cara memahami fungsi OPCache dan cara menggunakannya Rakan-rakan yang berminat boleh melihatnya bersama-sama.
Dalam projek PHP, terutamanya dalam senario dengan konkurensi yang tinggi dan trafik yang besar, cara meningkatkan masa tindak balas PHP adalah tugas yang sangat penting.
Opcache ialah komponen yang sangat diperlukan untuk mengoptimumkan prestasi PHP, terutamanya dalam projek yang menggunakan rangka kerja PHP.
1. Gambaran Keseluruhan
Sebelum memahami fungsi OPCache, kita perlu memahami mekanisme kerja PHP-FPM + Nginx dan mekanisme tafsiran dan pelaksanaan skrip PHP.
1.1 Mekanisme kerja PHP-FPM + Nginx
Permintaan pergi dari pelayar web ke Nginx, dan kemudian ke pemprosesan PHP Terdapat lima langkah:
Bab Langkah satu: Mulakan perkhidmatan
Mulakan PHP-FPM. PHP-FPM menyokong dua mod komunikasi: soket TCP dan soket Unix;
PHP-FPM akan memulakan dua jenis proses: Proses induk dan proses Worker; peruntukan Tugas dan pengurusan Proses pekerja; yang terakhir ialah program cgi PHP, yang bertanggungjawab untuk mentafsir, menyusun dan melaksanakan skrip PHP.
Mulakan Nginx. Pertama, modul ngx_http_fastcgi_module akan dimuatkan untuk memulakan persekitaran pelaksanaan FastCGI dan melaksanakan proksi permintaan protokol FastCGI
Nota di sini: proses pekerja fastcgi (proses cgi) diuruskan oleh PHP-FPM . Bukan Nginx. Nginx hanyalah proksi
Langkah 2: Request => Nginx
Nginx menerima permintaan dan mengkonfigurasinya berdasarkan di lokasi , pilih pengendali yang sesuai
Berikut ialah pengendali untuk proksi PHP
Langkah 3: Nginx => FPM
Nginx menterjemah permintaan ke dalam permintaan fastcgi
-
menghantarnya ke proses induk PHP-FPM melalui soket TCP/ Unix Socket
Langkah 4: PHP-FPM Master => request
- Tugaskan proses Worker untuk melaksanakan skrip PHP Jika tiada Worker terbiar, kembalikan ralat 502
- The Worker (php. -cgi) proses melaksanakan skrip PHP Jika tamat masa , mengembalikan ralat 504
- Pemprosesan selesai dan hasilnya dikembalikan
-
Langkah 5: PHP-FPM Worker => Master => ; Nginx
Proses PHP-FPM Worker mengembalikan hasil pemprosesan, menutup sambungan dan menunggu permintaan seterusnya
- Induk PHP-FPM Proses mengembalikan hasil pemprosesan melalui Soket
- Pengendali Nginx menghantar setiap penimbal respons ke penapis pertama secara berurutan → kedua → dan seterusnya → respons akhir dihantar kepada klien
- 1.2 Mekanisme tafsiran dan pelaksanaan skrip PHP Selepas memahami aliran pemprosesan keseluruhan PHP + Nginx, mari kita lihat aliran pelaksanaan khusus skrip PHP Mula-mula, mari kita lihat contoh:
<p><?php <br> if (!empty($_POST)) {<br> echo "Response Body POST: ", json_encode($_POST), "\n";<br> }<br> if (!empty($_GET)) { <br> echo "Response Body GET: ", json_encode($_GET), "\n";<br> }<br></p>
3 Enjin Zend menyusun pepohon sintaks dan menjana opcode, 4 Enjin Zend melaksanakan opcode dan mengembalikan hasil pelaksanaan
Dalam mod cli PHP, setiap kali. skrip PHP dilaksanakan, empat langkah akan dilaksanakan mengikut turutan; )~4) mesti dilaksanakan sekali untuk setiap permintaan;
Malah, pokok sintaks dan opcode yang dijana oleh langkah 2) dan 3), skrip PHP yang sama akan mempunyai hasil yang sama setiap kali ia dijalankan , dalam PHP -Mod FPM, setiap permintaan mesti diproses sekali, yang merupakan pembaziran besar sumber sistem Jadi adakah terdapat cara untuk mengoptimumkannya?
Sudah tentu, seperti:
OPCache: dahulunya dikenali sebagai Zend Optimizer+, ia adalah komponen sumber terbuka Pelayan Zend, sangat disyorkan
- APC: Alternatif PHP Cache ialah komponen caching opcode PHP yang terbuka dan percuma, digunakan untuk cache dan mengoptimumkan kod perantaraan PHP ia tidak lagi dikemas kini dan tidak disyorkan
- APCu: Ia adalah cawangan APC, berkongsi memori, cache data pengguna, tidak boleh cache opcode, dan boleh digunakan dengan Opcache
- eAccelerate: juga tidak dikemas kini , tidak disyorkan
- xCache: tidak disyorkan lagi
- 2. Pengenalan kepada OPCache OPCache dikeluarkan secara rasmi oleh Zend dan dibuka Sambungan cache opcode percuma juga mempunyai fungsi pengoptimuman kod, menghapuskan overhed memuatkan dan menghuraikan skrip PHP setiap kali. Sambungan OPcache telah digabungkan dalam PHP 5.5.0 dan versi seterusnya.
OPCode
- Interned String, seperti ulasan, nama pembolehubah, dll.
- 3.1 Memori Dikongsi
Memori yang dipetakan oleh mmap tidak berterusan. pemetaan Ia akan menjadi tidak sah serta-merta melainkan ia telah dipetakan ke fail terlebih dahulu
Mekanisme pemetaan memori mmap ialah panggilan sistem standard POSIX, dan terdapat dua jenis: pemetaan tanpa nama dan pemetaan fail
Salah satu kelebihan mmap ialah ia memetakan fail ke ruang alamat proses
-
mengelakkan proses penyalinan data daripada penimbal pengguna ke penimbal cache halaman kernel;
Sudah tentu, kelebihan lain ialah panggilan sistem baca/tulis yang kerap tidak diperlukan
- Kelas ditakrifkan dalam skrip PHP
- laluan fail skrip PHP
- skrip PHP OPArray
- Struktur/kandungan PHP sendiri
- 4.2 Interned String
- Memanaskan kod, seperti menggunakan penyahpepijatan kelompok skrip mengakses URL, atau menggunakan API yang didedahkan oleh OPCache seperti opcache_compile_file() untuk penyusunan dan caching
opcache.memory_consumption=64 OPcache saiz memori kongsi dalam megabait, lalai 64M
opcache.interned_strings_buffer=4 Gunakan saiz memori untuk menyimpan rentetan sementara , dalam megabait, lalai 4M
opcache.max_wasted_percentage=5 Had atas memori terbuang, dalam peratusan. Jika had ini dicapai, OPcache akan menjana acara mulakan semula. Lalai 5
opcache.max_accelerated_files=2000 Had atas bilangan fail skrip yang boleh disimpan dalam jadual cincang OPcache. Nilai sebenar ialah nombor perdana pertama yang terdapat dalam set nombor perdana {223, 463, 983, 1979, 3907, 7963, 16229, 32531, 65407, 130987} yang lebih besar daripada atau sama dengan nilai yang ditetapkan. Julat nilai minimum nilai tetapan ialah 200, nilai maksimum ialah 100000 sebelum PHP 5.5.6 dan 1000000 selepas PHP 5.5.6. Nilai lalai 2000
opcache.max_file_size=0 Saiz fail cache maksimum dalam bait. Tetapkan kepada 0 untuk cache semua fail. Lalai 0
opcache.load_commentsboolean Jika dilumpuhkan, ini tidak akan dimuatkan walaupun fail mengandungi kandungan Anotasi ulasan. Pilihan ini boleh digunakan bersama-sama dengan opcache.save_comments untuk memuatkan kandungan ulasan atas permintaan.
opcache.fast_shutdown boolean Jika didayakan, acara sambung henti pantas akan digunakan. Apa yang dipanggil acara penyambungan semula henti cepat merujuk kepada modul pengurusan memori yang bergantung pada enjin Zend untuk melepaskan memori semua pembolehubah yang diminta sekaligus, dan bukannya melepaskan setiap blok memori yang diperuntukkan dalam urutan.
opcache.file_cache Konfigurasikan direktori cache peringkat kedua dan dayakan cache peringkat kedua. Mendayakan cache peringkat kedua boleh meningkatkan prestasi apabila memori SHM penuh, pelayan dimulakan semula atau SHM ditetapkan semula. Nilai lalai ialah rentetan kosong "", yang melumpuhkan caching berasaskan fail.
opcache.file_cache_onlyboolean Mendayakan atau melumpuhkan caching opcode dalam memori kongsi.
opcache.file_cache_consistency_checksboolean Sama ada untuk mengesahkan jumlah semak fail semasa memuatkan skrip daripada cache fail.
opcache.file_cache_fallbackboolean Pada platform Windows, apabila proses tidak dapat dilampirkan pada memori kongsi, caching berasaskan fail digunakan, iaitu: opcache.file_cache_only=1. Caching fail perlu didayakan secara eksplisit.
Sistem UNIX/Linux menyediakan banyak cara untuk berkongsi memori antara proses:
1 System-V shm API: Sistem V shared memory
sysv shm adalah berterusan melainkan dinyatakan secara eksplisit oleh proses yang dipadamkan, sebaliknya. ia akan sentiasa wujud dalam memori sehingga sistem dimatikan;
2.mmap API:
3. API POSIX:
Memori kongsi Sistem V adalah Lapuk, memori kongsi POSIX menyediakan API yang lebih mudah digunakan dan direka bentuk dengan lebih rasional.
4 Unix socket API menggunakan tiga mekanisme memori kongsi pertama, bergantung pada konfigurasi atau mod perkongsian memori mmap lalai. Mengikut senario caching bytecode PHP, reka bentuk pengurusan memori OPCache adalah sangat mudah, dengan membaca dan menulis pantas, tiada pelepasan memori, dan data tamat tempoh ditetapkan kepada Wasted.
Apabila memori yang terbuang lebih besar daripada nilai yang ditetapkan, mekanisme OPCache dimulakan semula secara automatik, cache dikosongkan dan dijana semula.
3.2 Kunci Mutex
Sebarang pengendalian sumber memori melibatkan mekanisme kunci.
Memori dikongsi: Hanya satu proses dibenarkan untuk melaksanakan operasi tulis dalam satu unit masa, dan berbilang proses dibenarkan untuk melaksanakan operasi baca semasa operasi menulis dilakukan, operasi baca tidak disekat, sehingga jarang berlaku penguncian; keadaan atas.Ini membawa kepada masalah lain: kod baharu, senario trafik yang besar, proses beratur untuk melaksanakan operasi opcode cache yang membawa kepada pembaziran sumber.
OPCache ialah penyelesaian cache Opcode rasmi Selepas versi PHP5.5, ia telah dibungkus ke dalam kod sumber PHP dan dikeluarkan bersama .
Ia menyimpan kod bait dan data yang dijana oleh kompilasi PHP ke dalam memori kongsi Pada setiap permintaan, kod op yang disusun dibaca terus daripada cache dan dilaksanakan.Tingkatkan kecekapan berjalan PHP dengan menyimpan proses penyusunan skrip. Jika anda menggunakan sambungan APC untuk melakukan kerja yang sama, kini amat disyorkan untuk menggunakan OPCache sebaliknya, terutamanya dalam PHP7.
4.1 OPCode
Cache Opcache akan cache OPCode dan kandungan berikut:
- Fungsi yang terlibat dalam skrip PHP
Dalam PHP5.4, mekanisme Interned String telah diperkenalkan untuk mengoptimumkan penyimpanan dan pemprosesan rentetan PHP. Terutama apabila berurusan dengan blok rentetan yang besar, seperti doces PHP, Interned String boleh mengoptimumkan memori. Kandungan cache String Interned termasuk: nama pembolehubah, nama kelas, nama kaedah, rentetan, ulasan, dsb.
Dalam mod PHP-FPM, aksara cache String Interned dihadkan kepada dalam proses Worker. Jika dicache dalam OPCache, rentetan cache Interned String boleh digunakan antara proses Worker untuk menjimatkan memori.
Kita perlu memberi perhatian kepada satu perkara Dalam pembangunan PHP, biasanya terdapat komen yang besar, yang juga akan dicache dalam OPCache. Caching komen boleh dimatikan melalui konfigurasi php.ini.
Walau bagaimanapun, dalam rangka kerja seperti Zend Framework, ulasan akan dirujuk, jadi sama ada untuk mematikan cache ulasan perlu dilayan secara berbeza.ialah cache, yang mempunyai strategi tamat tempoh dan kemas kini. Strategi kemas kini OPCache adalah sangat mudah Data tamat tempoh ditetapkan kepada Terbuang Apabila nilai yang ditetapkan dicapai, cache dikosongkan dan cache dibina semula.
Nota di sini: Dalam senario trafik tinggi, membina semula cache adalah tugas yang sangat memakan sumber. OPCache tidak menghalang proses lain daripada membaca apabila mencipta cache. Ini mengakibatkan sejumlah besar proses berulang kali mencipta cache baharu. Oleh itu, jangan tetapkan masa tamat tempoh OPCache
Setiap kali kod baharu dikeluarkan, cache akan dibuat berulang kali. Bagaimana untuk mengelakkannya?
- Jangan keluarkan kod semasa tempoh puncak, ini adalah peraturan yang mesti dipatuhi dalam apa jua keadaan
6.1 Konfigurasi memori
opcache.preferred_memory_model="mmap" Modul memori pilihan OPcache. Jika dibiarkan kosong, OPcache akan memilih modul yang berkenaan Biasanya, pemilihan automatik sudah memadai. Nilai pilihan termasuk: mmap, shm, posix dan win32.
6.2 Bilangan dan saiz fail yang dibenarkan untuk dicache
6.3 Cache berkaitan ulasan
6.4 Konfigurasi cache peringkat kedua
Pembelajaran yang disyorkan: "Tutorial Video PHP"
Atas ialah kandungan terperinci Artikel yang menerangkan prinsip dan penggunaan PHP opcache secara terperinci. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

PHP 8.4 membawa beberapa ciri baharu, peningkatan keselamatan dan peningkatan prestasi dengan jumlah penamatan dan penyingkiran ciri yang sihat. Panduan ini menerangkan cara memasang PHP 8.4 atau naik taraf kepada PHP 8.4 pada Ubuntu, Debian, atau terbitan mereka

Jika anda seorang pembangun PHP yang berpengalaman, anda mungkin merasakan bahawa anda telah berada di sana dan telah melakukannya. Anda telah membangunkan sejumlah besar aplikasi, menyahpenyahpepijat berjuta-juta baris kod dan mengubah suai sekumpulan skrip untuk mencapai op

Kod Visual Studio, juga dikenali sebagai Kod VS, ialah editor kod sumber percuma — atau persekitaran pembangunan bersepadu (IDE) — tersedia untuk semua sistem pengendalian utama. Dengan koleksi sambungan yang besar untuk banyak bahasa pengaturcaraan, Kod VS boleh menjadi c

JWT adalah standard terbuka berdasarkan JSON, yang digunakan untuk menghantar maklumat secara selamat antara pihak, terutamanya untuk pengesahan identiti dan pertukaran maklumat. 1. JWT terdiri daripada tiga bahagian: header, muatan dan tandatangan. 2. Prinsip kerja JWT termasuk tiga langkah: menjana JWT, mengesahkan JWT dan muatan parsing. 3. Apabila menggunakan JWT untuk pengesahan di PHP, JWT boleh dijana dan disahkan, dan peranan pengguna dan maklumat kebenaran boleh dimasukkan dalam penggunaan lanjutan. 4. Kesilapan umum termasuk kegagalan pengesahan tandatangan, tamat tempoh, dan muatan besar. Kemahiran penyahpepijatan termasuk menggunakan alat debugging dan pembalakan. 5. Pengoptimuman prestasi dan amalan terbaik termasuk menggunakan algoritma tandatangan yang sesuai, menetapkan tempoh kesahihan dengan munasabah,

Rentetan adalah urutan aksara, termasuk huruf, nombor, dan simbol. Tutorial ini akan mempelajari cara mengira bilangan vokal dalam rentetan yang diberikan dalam PHP menggunakan kaedah yang berbeza. Vokal dalam bahasa Inggeris adalah a, e, i, o, u, dan mereka boleh menjadi huruf besar atau huruf kecil. Apa itu vokal? Vokal adalah watak abjad yang mewakili sebutan tertentu. Terdapat lima vokal dalam bahasa Inggeris, termasuk huruf besar dan huruf kecil: a, e, i, o, u Contoh 1 Input: String = "TutorialSpoint" Output: 6 menjelaskan Vokal dalam rentetan "TutorialSpoint" adalah u, o, i, a, o, i. Terdapat 6 yuan sebanyak 6

Tutorial ini menunjukkan cara memproses dokumen XML dengan cekap menggunakan PHP. XML (bahasa markup extensible) adalah bahasa markup berasaskan teks yang serba boleh yang direka untuk pembacaan manusia dan parsing mesin. Ia biasanya digunakan untuk penyimpanan data

Mengikat statik (statik: :) Melaksanakan pengikatan statik lewat (LSB) dalam PHP, yang membolehkan kelas panggilan dirujuk dalam konteks statik dan bukannya menentukan kelas. 1) Proses parsing dilakukan pada masa runtime, 2) Cari kelas panggilan dalam hubungan warisan, 3) ia boleh membawa overhead prestasi.

Apakah kaedah sihir PHP? Kaedah sihir PHP termasuk: 1. \ _ \ _ Membina, digunakan untuk memulakan objek; 2. \ _ \ _ Destruct, digunakan untuk membersihkan sumber; 3. \ _ \ _ Call, mengendalikan panggilan kaedah yang tidak wujud; 4. \ _ \ _ Mendapatkan, melaksanakan akses atribut dinamik; 5. \ _ \ _ Set, melaksanakan tetapan atribut dinamik. Kaedah ini secara automatik dipanggil dalam situasi tertentu, meningkatkan fleksibiliti dan kecekapan kod.
