“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:
- importeren en exporteren (producten, berichten, gebruikers);
- back-ups en migraties (UpdraftPlus, All-in-One WP Migration, Duplicator);
- afbeeldingen opnieuw genereren of in bulk comprimeren;
- een databaseupdate na een grote pluginupdate, bijvoorbeeld van WooCommerce;
- een plugin die een trage externe dienst aanroept die niet antwoordt.
Twee soorten time-outs
| Wat je ziet | Wie stopt | Oplossing |
|---|---|---|
Maximum execution time of N seconds exceeded in de log | PHP | max_execution_time verhogen of de taak opknippen |
| 504 Gateway Timeout of 502 Bad Gateway | De webserver wacht niet langer op PHP | Time-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
- Hostingpaneel: zet
max_execution_timebijvoorbeeld op 120 of 300 seconden bij de PHP-instellingen van je site. .user.iniin de hoofdmap:max_execution_time = 300..htaccess(php_value max_execution_time 300): alleen als PHP als Apache-module draait, anders een 500-fout.- In code roepen sommige plugins zelf
set_time_limit()aan; dat werkt alleen als de server het toestaat.
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? SpoedhulpLees ook: geheugenlimiet verhogen · uploadlimiet verhogen · debug.log aanzetten · WordPress-update mislukt · WordPress-website verhuizen · WordPress-plugins