OPcache: Bytecode-caching
Aktivér og finjustér OPcache for at eliminere overhead fra gentagen scriptkompilering.
OPcache: Bytecode-caching er en gratis PHP Academy-lektion på CoddyKit. Dette er lektion 2 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i PHP Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. PHP Academy-kurset indeholder 4 lektioner i alt.
Sådan fungerer PHP normalt
Uden OPcache får hver forespørgsel PHP til at: læse .php-filen fra disken, analysere den til en AST, kompilere den til opkoder (bytekode) og derefter udføre opkoderne.
Hvad OPcache gør
OPcache gemmer kompilerede opkoder i delt hukommelse. Ved efterfølgende forespørgsler springer PHP analyse- og kompileringstrinnene over og går direkte til udførelsen.
Ydeevnepåvirkning
OPcache giver typisk en forbedring af gennemløbet på 2-5 gange for PHP-applikationer uden krav om kodeændringer.
Aktivering af OPcache
OPcache følger med PHP 5.5+ og er aktiveret som standard i mange distributioner. Kontroller det med php -m | grep -i opcache.
# php.ini:
[opcache]
zend_extension=opcache.so
opcache.enable=1
opcache.enable_cli=0Vigtige OPcache-indstillinger
Finjuster disse indstillinger til produktion:
# 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
I produktion skal du indstille validate_timestamps=0 for at deaktivere filsystemkontroller ved hver forespørgsel — PHP bruger altid de cachelagrede opkoder. Nulstil cachen efter en udrulning.
Nulstilling af OPcache
Ryd cachen efter udrulning af ny kode.
<?php
opcache_reset(); // from a PHP script
// Or restart PHP-FPM:
$ kill -USR2 $(cat /run/php-fpm.pid)opcache_get_status()
Forespørg OPcache-statistikker under kørsel for at overvåge hitrate og hukommelsesforbrug.
<?php
$status = opcache_get_status();
echo "Hit rate: ".$status["opcache_statistics"]["opcache_hit_rate"]."%";Forudindlæsning (PHP 7.4+)
OPcache indlæser frameworkfiler i delt hukommelse ved serverstart — selv kompileringsoverheadet ved den første forespørgsel forsvinder for kerneklasser.
# php.ini:
opcache.preload=/srv/app/preload.php
opcache.preload_user=www-dataJIT-kompilering (PHP 8.0+)
PHP 8 introducerede JIT-kompilering (Just-In-Time) oven på OPcache, som konverterer opkoder til naturlig maskinkode. Det giver størst fordel ved CPU-intensive opgaver og kun en begrænset fordel for typiske I/O-bundne webapps.
# php.ini:
opcache.jit_buffer_size=100M
opcache.jit=1255Uforanderlige klasser
OPcache kan dele interned strings og uforanderlige klassedefinitioner på tværs af arbejderprocesser — hvilket reducerer hukommelsesforbruget pr. proces.
Opsummering
Aktiver OPcache i produktion med validate_timestamps=0. Ryd cachen efter udrulninger med opcache_reset() eller en genstart af PHP-FPM. Overvåg hitraten med opcache_get_status().
Hurtigt tjek
Hvilken php.ini-indstilling skal være 0 i produktion for at opnå maksimal OPcache-ydeevne?
Lær PHP med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 49
- Lektioner
- 195
Ofte stillede spørgsmål
Er lektionen “OPcache: Bytecode-caching” gratis?
Ja — hele teksten til “OPcache: Bytecode-caching” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af PHP Academy-kurset, skal du opgradere til CoddyKit PRO. PHP Academy-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “OPcache: Bytecode-caching”?
Aktivér og finjustér OPcache for at eliminere overhead fra gentagen scriptkompilering. Du øver dig i PHP Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på PHP Academy?
Der kræves ingen tidligere erfaring. PHP Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 2 af 4.
Hvor lang tid tager lektionen “OPcache: Bytecode-caching”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne PHP Academy-lektion?
Ja. Alle PHP Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Profilering af PHP med Xdebug
- OPcache: Bytecode-caching
- Optimering af databaseforespørgsler
- Hukommelsesstyring og tips til ydeevne