Direct naar de inhoud

“Maximum execution time exceeded” in WordPress oplossen

Home / Helpdesk / Foutmeldingen / “Maximum execution time exceeded” in WordPress oplossen

“Maximum execution time exceeded” in WordPress oplossen

4 min leestijd

Bijgewerkt op

De WordPress-foutmelding Maximum execution time of 30 seconds exceeded verschijnt zodra een PHP-proces langer draait dan PHP toestaat. Je ziet de fout vaak bij imports, backups of na een plugin-update, en de actie waar je mee bezig was breekt halverwege af. We leggen uit wat de fout betekent, hoe je maximum execution time exceeded tijdelijk en structureel oplost, en wanneer een verhoging via Plesk niet meer volstaat.

Wat betekent deze foutmelding?

PHP geeft elk script een maximale looptijd, ingesteld via max_execution_time. De standaardwaarde is 30 seconden. Loopt een script langer, dan breekt PHP het af en krijg je Fatal error: Maximum execution time of 30 seconds exceeded in de error-log of op het scherm. Het script stopt midden in de actie, en de wijziging die je probeerde door te voeren (een import, een backup, een database-update) is meestal niet volledig.

Het getal in de melding is de limiet die op dat moment gold. Staat er 60 seconds exceeded, dan was de limiet 60. Schrijf dat getal op: zo zie je of de standaardinstelling van je pakket al verhoogd was.

Zoek eerst de oorzaak

Voordat je de limiet verhoogt, loont het om te kijken waarom het script zo lang draait. De drie meest voorkomende oorzaken:

  • Trage queries: een plugin of thema draait een database-query zonder index, of een query die door honderdduizenden rijen zoekt. Bij elke pagina die laadt, telt dat op.
  • Grote imports: een WooCommerce-CSV met 20.000 producten, of een WP All Import-job die alle records in één keer probeert te verwerken.
  • Backup-plugins die in één keer alles verwerken: UpdraftPlus of soortgelijke plugins die een complete site in één keer in een zip-bestand willen zetten, vooral bij grotere mediabibliotheken.

Open de error-log via Plesk onder Files in /logs/error_log. De regels rond de fatal error wijzen vaak het bestand aan dat de tijd opslokte.

Snelle oplossing: max_execution_time verhogen in Plesk

Moet de import of backup gewoon af, en heb je geen tijd om eerst te optimaliseren, dan kun je max_execution_time verhogen via PHP Settings in Plesk. Je kunt de waarde voor jouw domein zelf ophogen, tot het maximum van je pakket.

Log in op het controlepaneel

Je vindt het controlepaneel door :8443 achter jouw domeinnaam te typen. Bijvoorbeeld: www.jouw-website.nl:8443.

Inlogscherm controlepaneel

Ben je je gebruikersnaam of wachtwoord vergeten, dan vind je op deze pagina instructies om je wachtwoord op te vragen.

  1. Klik in Plesk op Websites & Domains.
  2. Open de tegel van het domein waarop de foutmelding verschijnt.
  3. Klik op PHP Settings.
  4. Zoek de regel max_execution_time en zet de waarde van bijvoorbeeld 30 naar 120 of 300.
  5. Klik op OK. De wijziging is direct actief.

Voer daarna de actie opnieuw uit. Komt de fout terug met een hoger getal, dan duidt dat op een script dat blijft hangen op een trage query of een externe API zonder timeout. Verder ophogen helpt dan niet, en je moet alsnog optimaliseren.

Let op: de webserver hanteert bij lange verzoeken een eigen timeout. Bij heel lange imports kan een 504 Gateway Timeout verschijnen terwijl PHP op de achtergrond nog doorwerkt. Heb je het Businesspakket, voer zulke taken dan liever uit met WP-CLI op de commandoregel.

Beter: de oorzaak aanpakken

Verhogen lost het probleem maar tijdelijk op. Pak voor een blijvende oplossing de oorzaak aan. Drie aanpakken die in de praktijk werken:

Trage queries versnellen

Installeer Query Monitor of Debug Bar en kijk welke queries traag zijn. Veel plugins draaien queries zonder index op een meta-veld of postmeta-key. Door een ontbrekende index kan een query van milliseconden oplopen tot tientallen seconden. Meld het bij de maker van de plugin, of voeg zelf een index toe met een databasetool.

Importeren in batches

Gebruik WP-CLI in plaats van een browser-import. Met wp import file.xml --authors=create of een plugin-specifiek WP-CLI-commando draait de import op de commandoregel, zonder de tijdslimieten van een browser. Op het Businesspakket heb je WP-CLI direct via Plesk beschikbaar; op Advanced ontbreekt die mogelijkheid. Werkt de plugin alleen via de browser, kijk dan of je kunt instellen hoeveel records hij per keer verwerkt, en verlaag dat aantal.

Back-ups in delen

Backup-plugins zoals UpdraftPlus en BackWPup kunnen een back-up in meerdere archieven opsplitsen. Stel een maximumgrootte per archief in (bijvoorbeeld 250 MB), zodat de plugin de site in delen verwerkt in plaats van in één keer. Beter nog: gebruik de Acronis-backups die Chessweb levert. Die draaien op de server zelf en hebben geen last van PHP-limieten. In het artikel hoe zet ik een backup terug lees je hoe terugzetten met Acronis werkt.

Een hogere limiet dan Plesk toestaat

Plesk toont de standaard PHP-instellingen, maar niet alle waarden. Heb je een hogere max_execution_time nodig dan jouw pakket via Plesk biedt, mail dan support@chessweb.eu. We kijken wat mogelijk is en passen de instelling zo nodig aan op de server. Zit je nog op een oudere PHP-versie, dan loont het ook om eerst van PHP-versie te wisselen. Nieuwere PHP-versies zijn vaak sneller en lopen daardoor minder snel tegen de timeout aan.

Hulp nodig? Onze support kijkt met je mee, neem contact op.

WordPress hosting met staging en automatische back-ups

Op Advanced en Business verhuizen we 1 website kosteloos voor je. Binnen 24 uur live, vaak dezelfde dag.