Hoe de PHP Opcache-module inschakelen en configureren in ServBay
ServBay is een krachtige lokale webontwikkelomgeving die speciaal is ontworpen voor ontwikkelaars en verschillende technologie-stacks integreert, waaronder PHP. Om ontwikkelaars te helpen de prestaties van hun PHP-applicaties te optimaliseren, wordt de Opcache-module vooraf geïnstalleerd voor elke ondersteunde PHP-versie in ServBay. In dit artikel lees je hoe je Opcache in ServBay activeert en configureert, en hoe dit je PHP-ontwikkeling en testwerk versnelt.
Introductie tot de Opcache-module
Opcache is een officiële extensie voor PHP die is bedoeld om de uitvoeringsprestaties van PHP-code te verbeteren. Het belangrijkste principe is het cachen van vooraf gecompileerde PHP-script bytecode in gedeeld geheugen. Hierdoor kunnen volgende verzoeken voor hetzelfde script deze gecachte bytecode direct gebruiken, zonder steeds opnieuw te hoeven parsen, compileren en optimaliseren. Dit vermindert het CPU- en geheugenverbruik aanzienlijk en versnelt de responsetijd van je applicatie.
Waarom is Opcache belangrijk voor ontwikkelaars?
- Snellere ontwikkeling en testen: Door Opcache in te schakelen in je lokale ontwikkelomgeving draait je applicatie merkbaar sneller, wat wachttijd bij het laden van pagina’s vermindert en jouw efficiëntie verhoogt.
- Productieomgeving simuleren: In de meeste productieomgevingen is Opcache standaard ingeschakeld voor optimale prestaties. Lokale activering helpt je omgeving gelijk te trekken met productie.
- Minder resourcegebruik: Vooral bij het draaien van grote frameworks of complexe applicaties kan Opcache het lokale systeem flink ontlasten.
Belangrijkste eigenschappen van Opcache
- Bytecode caching: De primaire functie; gecompileerde PHP-code wordt opgeslagen in cache.
- Gedeeld geheugen: De cache wordt opgeslagen in gedeeld geheugen, toegankelijk voor meerdere PHP-processen.
- Automatische verversing: Opcache kan zo geconfigureerd worden dat het regelmatig controleert op bijgewerkte bestanden, zodat de cache up-to-date blijft.
- Flexibele configuratie: Uitgebreide instellingen om aan te passen aan jouw behoeften.
- Ingebouwde support: Als officiële PHP-extensie geïntegreerd met de PHP-kern.
Ondersteuning van Opcache in ServBay
ServBay heeft voor alle geïntegreerde PHP-versies (zoals PHP 7.4, 8.0, 8.1, 8.2, 8.3, 8.4, etc.) de bijbehorende Opcache-module al geïnstalleerd. Gebruikers hoeven dus niets meer te downloaden of te compileren; inschakelen en instellen gaat eenvoudig via de grafische interface of door de configuratiebestanden aan te passen.
Hoe schakel je de Opcache-module in?
In ServBay kun je Opcache op twee manieren activeren: via de grafische gebruikersinterface (GUI) of door het configuratiebestand handmatig te bewerken.
Methode 1: Inschakelen via de ServBay GUI (Aanbevolen)
Dit is de eenvoudigste en snelste manier:
- Open de ServBay-applicatie.
- Klik in de zijbalk op Talen (Languages).
- Kies de PHP-versie waarin je Opcache wilt activeren, bijvoorbeeld PHP 8.3.
- Klik aan de rechterkant in het detailoverzicht op het tabblad Extensies (Extensions).
- Zoek in de lijst de extensie OPcache.
- Zet het schakelaartje naast OPcache aan.
- Klik onderaan de pagina op Opslaan (Save).
- ServBay vraagt je nu het betreffende PHP-pakket te herstarten om de wijzigingen toe te passen. Klik op Herstarten (Restart).
Na het voltooien van de herstart, is de Opcache-module geactiveerd.
Methode 2: Handmatig het configuratiebestand bewerken
Wil je meer geavanceerde instellingen doen of regel je liever alles zelf, dan bewerk je het Opcache .ini
-bestand handmatig.
- Zoek het configuratiebestand: Het configuratiebestand voor Opcache bevindt zich in de
conf.d
-map van de betreffende PHP-versie. Hier staan de configuraties van de verschillende PHP-extensies.- Voor PHP 8.3 is het pad bijvoorbeeld:
/Applications/ServBay/etc/php/8.3/conf.d/opcache.ini
1 - Pas het versienummer aan volgens de gebruikte PHP-versie.
- Voor PHP 8.3 is het pad bijvoorbeeld:
- Bewerk het configuratiebestand: Open het bestand
opcache.ini
met je favoriete teksteditor.- Meestal bevat het bestand al een basisconfiguratie die is uitgecommentarieerd. Zoek het gedeelte
[Zend Opcache]
. - Haal het commentaarsymbool (
;
) weg voorzend_extension = opcache.so
om zeker te weten dat de extensie geladen wordt. - Pas zo nodig andere instellingen aan of voeg ze toe. Een typisch configuratievoorbeeld (met toelichting van de parameters volgt in de volgende sectie):ini
[Zend Opcache] ; Ensure the extension is loaded zend_extension = opcache.so ; Basic Configuration (example values) opcache.enable = 1 ; Enable Opcache globally (1=enabled, 0=disabled) opcache.memory_consumption = 128 ; Amount of memory for opcode cache (in MB) opcache.interned_strings_buffer = 8; Amount of memory for interned strings (in MB) opcache.max_accelerated_files = 4000 ; Maximum number of files to cache opcache.revalidate_freq = 60 ; How often to check file timestamps for updates (in seconds). 0 = check on every request (slow), but good for development. opcache.fast_shutdown = 1 ; Enable fast shutdown opcache.enable_cli = 1 ; Enable Opcache for the PHP CLI (Command Line Interface)
1
2
3
4
5
6
7
8
9
10
11
12 - Sla het bestand
opcache.ini
op.
- Meestal bevat het bestand al een basisconfiguratie die is uitgecommentarieerd. Zoek het gedeelte
- Herstart het PHP-pakket: Zoek in de ServBay-app het juiste PHP-pakket (onder Pakketten (Packages) in de zijbalk en dan PHP), en klik op de herstartknop.
Na het opslaan en herstarten werkt de aangepaste Opcache-configuratie direct.
Controleren of de Opcache-module geladen is
De meest betrouwbare manier om te checken of Opcache actief is, is via de PHP-configuratie (phpinfo()
).
- Maak een
phpinfo.php
-bestand aan: Plaats een nieuw PHP-bestand in de rootmap van je ServBay-site, bijvoorbeeldphpinfo.php
. Standaard is deze map/Applications/ServBay/www/
. Je kunt hiervoor een submap aanmaken zoals/Applications/ServBay/www/servbay.demo/
en daar het bestand plaatsen. Bijvoorbeeld:php<?php phpinfo(); ?>
1
2
3 - Open
phpinfo.php
: Zorg ervoor dat je webserver (zoals Caddy of Nginx) draait en is geconfigureerd voor jouw (sub)directory. Open het bestand in de browser via het bijbehorende URL.- Als je het bestand in
/Applications/ServBay/www/servbay.demo/
hebt gezet en een domeinservbay.demo
hieraan hebt gekoppeld, bezoek je:http://servbay.demo/phpinfo.php
. - Staat het in de standaard root, dan is de URL vermoedelijk
http://localhost/phpinfo.php
of het standaard lokale adres van ServBay.
- Als je het bestand in
- Zoek naar Opcache-informatie: Op de geopende
phpinfo()
-pagina, scroll naar beneden of gebruik zoeken (Cmd+F
ofCtrl+F
) op "Opcache".- Indien geladen, verschijnt er een aparte sectie "Zend Opcache" met versie, status en configuratieparameters.
- Vind je "Zend Opcache" niet, dan is de module niet correct geladen. Controleer de inschakelstappen en het configuratiebestand opnieuw.
Illustratie: Zo vind je het Zend Opcache-blok op de phpinfo-pagina
Uitleg van de belangrijkste Opcache-instellingen
Opcache biedt veel configuratieopties, die je aanpast aan de behoeften van jouw (ontwikkel)project. Meestal configureer je deze in opcache.ini
. Hier enkele veelgebruikte en belangrijke parameters met uitleg:
ini
[Zend Opcache]
; Zorg dat de extensie wordt geladen
zend_extension = opcache.so
; Schakel Opcache in. 0 = uitgeschakeld, 1 = ingeschakeld. De GUI-schakelaar bedient deze parameter.
opcache.enable = 1
; Toegekend gedeeld geheugen voor gecachede bytecode (in MB).
; Pas aan op basis van projectgrootte en beschikbare RAM. Grote projecten vereisen meer geheugen.
opcache.memory_consumption = 128
; Gedeeld geheugen voor interne strings (zoals klasse- of functienamen), in MB.
; Frameworks met veel strings (zoals Symfony) hebben hier baat bij.
opcache.interned_strings_buffer = 8
; Maximum aantal bestanden dat Opcache mag cachen.
; Zet dit hoger dan het totaal aantal projectbestanden, anders worden sommige niet gecachet.
opcache.max_accelerated_files = 10000
; Frequentie waarmee Opcache controleert op bestandswijzigingen, in seconden.
; In productie meestal ingesteld op een hoog getal (zoals 300 of 600), of 0 voor handmatig legen.
; **In lokale ontwikkeling is een laag getal (zoals 1 of 2) of 0 aanbevolen, zodat codewijzigingen snel zichtbaar zijn.** Bij 0 wordt bij elk verzoek gecontroleerd, wat prestaties iets kan drukken, maar wel handig is tijdens ontwikkeling.
opcache.revalidate_freq = 2
; Activeert snelle afsluitreeks. Maakt het vrijgeven van geheugen na een verzoek sneller. Meestal aanbevolen.
opcache.fast_shutdown = 1
; Schakel Opcache in voor PHP CLI.
; Dit versnelt bijvoorbeeld Composer-commando’s of unittests, meestal aanbevolen.
opcache.enable_cli = 1
; Toestaan dat ongebruikte gedeeld geheugen wordt vrijgegeven. Dit kan soms geheugengebruik optimaliseren, maar heeft meestal weinig effect op prestaties.
; opcache.enable_file_override = 0
; Cache je bestandscommentaar? Bespaart wat geheugen, maar kan tools die reageren op commentaar mogelijk hinderen.
; opcache.save_comments = 1
; Houd Docblocks (documentatiecommentaar) in de cache. Benodigd voor bijvoorbeeld PHPUnit of Doctrine.
; opcache.load_comments = 1
; Optimalisatieniveau. Hogere waarden leveren meer optimalisaties, maar kosten mogelijk meer compileertijd. De standaardwaarde is vaak prima.
; opcache.optimization_level = 0x7FFFBBFF
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
Let op: na wijzigen van opcache.ini
het betreffende PHP-pakket altijd herstarten om de wijzigingen door te voeren.
Veelgestelde vragen (FAQ)
- Vraag: Staat Opcache standaard aan? Antwoord: In ServBay is de Opcache-module vooraf geïnstalleerd, maar meestal standaard uitgeschakeld. Je moet deze handmatig activeren zoals hierboven beschreven.
- Vraag: Verandert inschakelen van Opcache mijn ontwikkelworkflow? Antwoord: Door Opcache te activeren draaien je applicaties sneller. Tijdens het ontwikkelen kun je
opcache.revalidate_freq
het beste laag (1 of 2) of op 0 zetten, zodat je direct veranderingen ziet. Na het afronden van je werk en bij deployen in productie kun je deze waarde hoger zetten of 0 (en handmatig legen). - Vraag: Worden PHP CLI-scripts ook door Opcache gecachet? Antwoord: Standaard niet. Zet de parameter
opcache.enable_cli
op1
om Opcache voor de PHP CLI te activeren. Dit versnelt het uitvoeren van Composer, unittests en andere commandoregeltools. - Vraag: Hoeveel geheugen moet ik aan Opcache toewijzen? Antwoord: De waarde van
opcache.memory_consumption
hangt af van de grootte en complexiteit van je project. 128MB of 256MB is meestal voldoende voor lokale projecten. Zie je inphpinfo()
waarschuwingen dat de cache volloopt, verhoog dit dan. - Vraag: Wat moet ik doen na het wijzigen van
opcache.ini
? Antwoord: Na elke wijziging moet je het bijbehorende PHP-pakket herstarten zodat de nieuwe instellingen worden toegepast.
Samenvatting
Opcache is een krachtig en gebruiksvriendelijk hulpmiddel om de prestaties van PHP te maximaliseren. ServBay maakt het activeren en beheren van Opcache zeer eenvoudig, zowel via de duidelijke gebruikersinterface als via flexibele configuratiebestanden. Met slechts een paar stappen kun je Opcache binnen ServBay inschakelen en profiteer je direct van snellere laadtijden en betere responsiviteit van je PHP-applicaties. Door de instellingen slim aan te passen aan jouw project en workflow, kun je nog meer uit Opcache halen. Ervaar nu zelf de boost in PHP-prestaties door Opcache te activeren in ServBay!