PHP
PHP (Hypertext Preprocessor) is een open-source scripttaal die speciaal geschikt is voor webontwikkeling. Het draait aan de serverkant, wat betekent dat het code op de webserver verwerkt voordat het naar de client (browser) wordt gestuurd. WordPress is gebouwd op PHP; daarom is het essentieel voor WordPress sites. PHP stelt je WordPress site in staat om:
- Dynamische inhoud genereren en deze in real-time weergeven op een website.
- Interactie met je database, zodat het gegevens kan ophalen en opslaan.
- Formulieren afhandelen en gebruikersinvoer verwerken, waardoor WordPress sites interactiever worden.
- Thema’s en plugins te gebruiken om de kernmogelijkheden van WordPress uit te breiden.
- Prestaties verbeteren door ervoor te zorgen dat veel van het zware werk op de webserver gebeurt voordat de inhoud de browser van de gebruiker bereikt.
Hoe PHP wordt verwerkt
Wanneer een bezoeker een pagina zonder cache bezoekt of een actie uitvoert op een pagina (bijvoorbeeld iets toevoegen aan een winkelwagentje, een formulier invullen, enzovoort), vindt het volgende proces plaats:
- De webserver (Nginx hier bij Kinsta) ontvangt dat verzoek.
- Nginx geeft het verzoek door aan PHP, dat wordt toegewezen aan een beschikbare PHP thread.
- De PHP thread voert het PHP script uit (bijvoorbeeld het ophalen van gegevens uit de database of het verwerken van formulieren).
- Tijdens het verwerken gebruikt de PHP thread een deel van het geheugen van de server tot de PHP geheugenlimiet die is ingesteld in Kinsta.
- Als er meerdere gelijktijdige bezoekers zijn, wordt elk verzoek toegewezen aan een andere PHP thread. Als alle threads bezet zijn, wachten extra verzoeken tot er een thread beschikbaar komt.
- PHP genereert dan een HTML pagina met behulp van de PHP bestanden van je thema (en eventuele plugin-bestanden).
- PHP stuurt de gerenderde HTML-pagina terug naar de webserver.
- De pagina wordt geleverd aan de bezoeker.
Als je site geen caching gebruikt of niet is geoptimaliseerd, kunnen PHP threads langer bezig zijn, wat de prestaties kan verminderen en kan leiden tot timeouts of 503 en 504 fouten wanneer bezoekers je site bezoeken. Raadpleeg PHP prestaties voor informatie over hoe je de PHP prestaties kunt controleren en hoe je je PHP threads kunt optimaliseren.
PHP threads
PHP threads (voorheen bekend als PHP workers) zijn individuele PHP processen die verantwoordelijk zijn voor het afhandelen van binnenkomende aanvragen op je website. Elke thread verwerkt één verzoek per keer, wat betekent dat als je twee threads hebt, er slechts twee verzoeken tegelijkertijd kunnen worden verwerkt.
Zodra een PHP thread klaar is met het verwerken van een verzoek (bijvoorbeeld het renderen van een pagina of het ophalen van gegevens uit een database), is hij vrij om het volgende verzoek te verwerken.
PHP threads komen pas echt van pas als een site de meeste inhoud niet in de cache heeft of kan opslaan. Hoe dynamischer een website is, hoe meer PHP threads hij waarschijnlijk nodig heeft. Gecachete content heeft geen PHP threads nodig; ze zijn eigenlijk alleen nodig als de site de database moet raadplegen om informatie op te halen of te wijzigen. Een geoptimaliseerde site handelt verzoeken snel af en maakt PHP threads vrij voor het volgende verzoek in de wachtrij.
Raadpleeg PHP prestaties voor informatie over het optimaliseren van je PHP threads.
Kinsta pakketten en PHP threads
De volgende tabel toont de standaard PHP pool, het aantal threads en het geheugen per thread die standaard zijn opgenomen in elk pakket van Kinsta:
Pakket | Poolgrootte | Aantal threads | Geheugen per thread |
---|---|---|---|
Single 35k | 512 MB | 2 | 256MB |
Single 65k | 1GB | 4 | 256MB |
Single 125k | 1.5GB | 6 | 256MB |
Single 315k | 1.5GB | 6 | 256MB |
Single 500k | 2GB | 8 | 256MB |
Single 750k | 2GB | 8 | 256MB |
WP 2 | 512MB | 2 | 256MB |
WP 5 | 1GB | 4 | 256MB |
WP 10 | 1GB | 4 | 256MB |
WP 20 | 1.5GB | 6 | 256MB |
WP 40 | 1.5GB | 6 | 256MB |
Je kunt het aantal PHP threads wijzigen voor elke site binnen WordPress siteswijzigen > sitenaam > Info > PHP prestaties > Wijzigen.
De volgende pakketten hebben momenteel geen toegang tot de PHP prestatiefeature of PHP pools. Ze bevatten echter standaard het volgende aantal PHP threads:
Pakket | PHP threads per site |
---|---|
Single 1.25M | 10 |
Single 1.9M | 12 |
Single 2.5M | 14 |
Single 3.15M | 16 |
WP 60 | 8 |
WP 80 | 10 |
WP 120 | 12 |
WP 150 | 14 |
Agency 20 | 6 |
Agency 40 | 6 |
Agency 60 | 8 |
PHP geheugenlimiet
De PHP geheugenlimiet definieert de maximale hoeveelheid geheugen (RAM) die elke PHP thread kan gebruiken tijdens het verwerken van een verzoek.
Deze limiet is cruciaal omdat PHP scripts (vooral in WordPress) vaak geheugenintensieve taken moeten uitvoeren, zoals grote database queries, media uploads of complexe berekeningen.
Als een script de ingestelde geheugenlimiet overschrijdt, resulteert dit in een foutmelding (bijvoorbeeld “Toegestane geheugengrootte uitgeput”). Dit voorkomt dat één script te veel systeemresources gebruikt.
Kinsta pakkettenen PHP geheugen
Kinsta’s standaard geheugenlimiet is 256MB voor Single 35k, 65k, 125k, 315k, 500k, en 750k, en WP 2, 5, 10, 20, en 40 pakketten, wat meer dan genoeg is voor de meeste WordPress plugins en sites. Single 1.25M, 1.9M, 2.5M en 3.15M, WP 60, 80, 120 en 150 en Agency 20, 40 en 60 pakketten hebben een geheugenlimiet van 512MB. Deze limiet bestaat om te voorkomen dat PHP scripts te veel geheugen gebruiken. Als je de limiet te hoog instelt, kan een verkeerd geconfigureerd of kapot script ernstige problemen veroorzaken door te veel geheugen te gebruiken.
Je kunt de PHP geheugenlimiet van een site wijzigen binnen WordPress sites > sitenaam > Info > PHP prestaties > Wijzigen.
Interactie tussen PHP threads en geheugen
Het aantal PHP threads moet niet worden verward met de PHP geheugenlimiet. PHP threads zijn individuele PHP processen die inkomende webverzoeken afhandelen, terwijl de PHP geheugenlimiet de maximale hoeveelheid geheugen (RAM) specificeert die een enkel PHP script kan gebruiken tijdens de uitvoering.
PHP threads beheren gelijktijdigheid door meerdere verzoeken tegelijk te verwerken, terwijl de PHP geheugenlimiet de toewijzing van resources beheert door het geheugengebruik van afzonderlijke scripts te beperken. Dit voorkomt dat één script al het beschikbare geheugen van de server gebruikt.
PHP geheugenlimieten zijn belangrijk voor scripts die veel geheugen nodig hebben, zoals scripts die grote databasequeries uitvoeren, grote bestandsuploads verwerken of complexe berekeningen uitvoeren. Als je geheugenlimietfouten tegenkomt op je site, zal het verhogen van het aantal PHP threads dit probleem niet oplossen. In plaats daarvan moet je het geheugen per thread verhogen binnen WordPress sites > sitenaam > Info > PHP prestaties > Wijzigen.
Interactie tussen PHP threads, CPU en RAM
Bij het toevoegen van PHP threads moet je rekening houden met CPU en RAM bronnen. Als je het aantal PHP threads verhoogt, maar de server heeft meer CPU en RAM nodig om die threads te ondersteunen, dan zal dit een knelpunt veroorzaken omdat de verzoeken niet efficiënt zullen worden afgehandeld.
Hier bij Kinsta is elke custom LXD container geconfigureerd met 12 CPU’s en 8 GB RAM. Bovendien helpen we de PHP threads van je site efficiënter te draaien door gebruik te maken van C2 en C3D virtuele machines die zijn uitgerust met de snelste CPU’s van Google Cloud. Onze schaalbare infrastructuur zorgt ervoor dat de PHP threads van je WordPress site genoeg CPU-resources hebben om optimaal te presteren.
Standaard PHP waarden
Als Managed WordPress dienst heeft Kinsta de optimale PHP instellingen geconfigureerd om het beste te werken met WordPress sites. Als je specifieke PHP vereisten hebt, voel je dan vrij om contact op te nemen met ons Support Team om je behoeften te bespreken.
Kinsta biedt PHP 7.4, 8.0, 8.1, 8.2, 8.3 en 8.4. Dit zijn de standaardinstellingen voor PHP:
- memory_limit = 256M
- post_max_size = 128M
- upload_max_filesize = 128M
- max_input_vars = 10000
- max_execution_time = 300