PHP Academy · Oppitunti

OPcache: tavukoodin välimuisti

Ottakaa OPcache käyttöön ja hienosäätäkää sitä toistuvan skriptien käännön aiheuttaman kuormituksen poistamiseksi.

Oppitunti 2/413 vaihetta

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=0

OPcachen 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 timestamps

validate_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-data

JIT-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=1255

Muuttumattomat 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ä?

Aloita maksutta

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

  1. PHP:n profilointi Xdebugilla
  2. OPcache: tavukoodin välimuisti
  3. Tietokantakyselyjen optimointi
  4. Muistinhallinta ja suorituskykyvinkit
← Takaisin: PHP Academy