“Maximum execution time of 30 seconds exceeded” in WordPress oplossen

Laatst bijgewerkt:

Een import van producten, een back-up, een migratie of een grote update stopt halverwege, en in de log staat Maximum execution time of 30 seconds exceeded. PHP geeft elk verzoek een maximale rekentijd; duurt een taak langer, dan wordt hij afgebroken. Soms zie je dan een kritieke fout, soms een 504-time-out. Zo los je het op in WordPress.

Waar komt de fout vandaan?

De PHP-instelling max_execution_time (vaak 30 of 60 seconden) bepaalt hoe lang één verzoek mag rekenen. Bij gewone pagina’s haal je dat nooit. Het gaat mis bij taken die veel in één keer doen:

Twee soorten time-outs

Wat je zietWie stoptOplossing
Maximum execution time of N seconds exceeded in de logPHPmax_execution_time verhogen of de taak opknippen
504 Gateway Timeout of 502 Bad GatewayDe webserver wacht niet langer op PHPTime-out van de webserver verhogen (hostingpartij) of de taak opknippen

Verhoog je alleen de PHP-limiet, dan kan de webserver alsnog eerder afbreken. Meer over 502/503/504: 502-, 503- en 504-fouten.

De tijdslimiet verhogen

Zet de limiet na een eenmalige klus weer terug. Een hoge limiet voor alle verzoeken betekent dat een vastgelopen script langer de server bezet houdt.

Beter: zware taken via WP-CLI of in stukken

De opdrachtregel van PHP heeft standaard geen tijdslimiet. Heb je SSH-toegang, dan draai je zware klussen daar:

wp media regenerate --yes
wp wc update
wp db export back-up.sql
wp search-replace 'https://oud.nl' 'https://nieuw.nl' --dry-run

(wp wc update komt van WooCommerce zelf; --dry-run laat eerst zien wat er zou veranderen.) Geen SSH? Gebruik dan de instellingen van je plugin om in kleinere stukken te werken: minder producten per importronde, back-ups in delen, of de back-up laten wegschrijven naar externe opslag.

WP-Cron en achtergrondtaken

Veel plugins plannen taken via WP-Cron, dat alleen draait als er bezoekers zijn. Lopen geplande taken achter of vast, dan stapelen ze zich op en duren ze langer. Op drukke of juist rustige sites is het beter WP-Cron uit te zetten (define( 'DISABLE_WP_CRON', true );) en een echte servertaak elke paar minuten wp cron event run --due-now te laten draaien. WooCommerce gebruikt daarnaast een eigen wachtrij (Gereedschap → Geplande acties) waarin je ziet welke taken mislukken.

Blijft het misgaan?

Loopt dezelfde taak telkens vast, ook met een ruime limiet, dan wacht een plugin vaak op een externe dienst die niet reageert, of zit er een fout in de data (een kapotte afbeelding, een enorm logbestand in de database). Zet debug.log aan om te zien bij welke stap het stopt, en kijk met Query Monitor naar trage databasevragen en HTTP-aanroepen. Algemene uitleg over deze PHP-fout: Maximum execution time exceeded in PHP.

Veelgestelde vragen

Wat betekent "Maximum execution time of 30 seconds exceeded"?

Dat een PHP-verzoek langer dan de toegestane 30 seconden rekende en is afgebroken. In WordPress gebeurt dat vooral bij imports, back-ups, migraties en grote updates.

Hoe verhoog ik max_execution_time in WordPress?

Via de PHP-instellingen in je hostingpaneel of met max_execution_time = 300 in een .user.ini-bestand. In wp-config.php kun je deze PHP-limiet niet betrouwbaar verhogen.

Waarom krijg ik een 504-fout terwijl ik de limiet al heb verhoogd?

Dan breekt de webserver het verzoek af omdat hij niet langer op PHP wacht. Die time-out moet op de server worden verhoogd, of je knipt de taak op in kleinere stukken.

Heeft WP-CLI ook een tijdslimiet?

Standaard niet: PHP op de opdrachtregel heeft geen maximale uitvoeringstijd. Daarom zijn zware taken via WP-CLI vaak betrouwbaarder.

Taak blijft vastlopen?

Wij voeren de import, migratie of update voor je uit, via de opdrachtregel als dat veiliger is.

Hulp aanvragen Site plat? Spoedhulp

Lees ook: geheugenlimiet verhogen · uploadlimiet verhogen · debug.log aanzetten · WordPress-update mislukt · WordPress-website verhuizen · WordPress-plugins

← Terug naar de kennisbank