OPcache: tavukoodin välimuisti
Ottakaa OPcache käyttöön ja hienosäätäkää sitä toistuvan skriptien käännön aiheuttaman kuormituksen poistamiseksi.
OPcache: tavukoodin välimuisti on ilmainen PHP Academy-oppitunti CoddyKitissä. Tämä on oppitunti 2/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu PHP Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. PHP Academy-kurssilla on yhteensä 4 oppituntia.
Miten PHP toimii normaalisti
Ilman OPcachea jokainen pyyntö saa PHP:n lukemaan .php-tiedoston levyltä, jäsentämään sen AST:ksi, kääntämään sen opcodeiksi (tavukoodiksi) ja suorittamaan opcodet.
Mitä OPcache tekee
OPcache tallentaa käännetyt opcodet jaettuun muistiin. Seuraavilla pyynnöillä PHP ohittaa jäsentämis- ja käännösvaiheet ja siirtyy suoraan suoritukseen.
Vaikutus suorituskykyyn
OPcache parantaa PHP-sovellusten läpimenoa tyypillisesti 2–5-kertaiseksi ilman koodimuutoksia.
OPcachen käyttöönotto
OPcache sisältyy PHP-versioon 5.5 ja sitä uudempiin versioihin, ja se on oletusarvoisesti käytössä monissa jakeluissa. Tarkistakaa tila komennolla php -m | grep -i opcache.
# php.ini:
[opcache]
zend_extension=opcache.so
opcache.enable=1
opcache.enable_cli=0OPcachen tärkeät asetukset
Säätäkää seuraavat asetukset tuotantoa varten:
# 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
Asettakaa tuotannossa validate_timestamps=0, jotta tiedostojärjestelmän tarkistukset poistetaan käytöstä jokaisella pyynnöllä — PHP käyttää aina välimuistissa olevaa opcodea. Tyhjentäkää välimuisti käyttöönoton jälkeen.
OPcachen nollaaminen
Tyhjentäkää välimuisti uuden koodin käyttöönoton jälkeen.
<?php
opcache_reset(); // from a PHP script
// Or restart PHP-FPM:
$ kill -USR2 $(cat /run/php-fpm.pid)opcache_get_status()
Kyselkää OPcache-tilastoja suorituksen aikana osumaprosentin ja muistin käytön seuraamiseksi.
<?php
$status = opcache_get_status();
echo "Hit rate: ".$status["opcache_statistics"]["opcache_hit_rate"]."%";Esilataus (PHP 7.4+)
OPcachen esilataus lataa kehyksen tiedostot jaettuun muistiin palvelimen käynnistyessä — näin ydinkoodin luokkien kääntämisestä aiheutuva ensimmäisen pyynnön kustannus poistuu.
# php.ini:
opcache.preload=/srv/app/preload.php
opcache.preload_user=www-dataJIT-käännös (PHP 8.0+)
PHP 8 toi OPcachen päälle JIT (Just-In-Time) -käännöksen, joka muuntaa opcodet natiiviksi konekoodiksi. Hyöty on suurin suorittimesta riippuvissa tehtävissä ja vähäinen tyypillisissä I/O-sidonnaisissa web-sovelluksissa.
# php.ini:
opcache.jit_buffer_size=100M
opcache.jit=1255Muuttumattomat luokat
OPcache voi jakaa interned-merkkijonot ja muuttumattomat luokkamäärittelyt työprosessien kesken, mikä vähentää prosessikohtaista muistin kulutusta.
Yhteenveto
Ottakaa OPcache tuotannossa käyttöön asetuksella validate_timestamps=0. Tyhjentäkää välimuisti käyttöönottojen jälkeen komennolla opcache_reset() tai käynnistämällä PHP-FPM uudelleen. Seuratkaa osumaprosenttia komennolla opcache_get_status().
Pikatarkistus
Minkä php.ini-asetuksen arvoksi pitäisi tuotannossa asettaa 0, jotta OPcachen suorituskyky olisi mahdollisimman hyvä?
Opi PHP tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 49
- Oppitunnit
- 195
Usein kysytyt kysymykset
Onko oppitunti ”OPcache: tavukoodin välimuisti” ilmainen?
Kyllä – oppitunnin ”OPcache: tavukoodin välimuisti” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko PHP Academy-kurssin, päivitä CoddyKit PROhon. PHP Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”OPcache: tavukoodin välimuisti”?
Ottakaa OPcache käyttöön ja hienosäätäkää sitä toistuvan skriptien käännön aiheuttaman kuormituksen poistamiseksi. Harjoittelet PHP Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni PHP Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin PHP Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/4.
Kuinka kauan ”OPcache: tavukoodin välimuisti”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä PHP Academy-oppitunnilla?
Kyllä. Jokainen PHP Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- PHP:n profilointi Xdebugilla
- OPcache: tavukoodin välimuisti
- Tietokantakyselyjen optimointi
- Muistinhallinta ja suorituskykyvinkit