Menu
Bug e Vulnerabilità

Errore “Maximum Execution Time Exceeded” in WordPress: come risolverlo

Gianluca Gentile · · 4 min di lettura

Errore “Maximum Execution Time Exceeded” in WordPress: come risolverlo

L’errore “Maximum execution time of 30 seconds exceeded” è uno dei più comuni in WordPress. Si verifica quando uno script PHP impiega più tempo del limite consentito dal server per completare l’esecuzione. Questo può succedere durante l’installazione di un plugin, l’importazione di contenuti, l’aggiornamento di WordPress o l’esecuzione di operazioni pesanti. Ecco come risolverlo.

Perché si verifica questo errore

PHP ha un parametro chiamato max_execution_time che limita il tempo massimo di esecuzione di uno script. Il valore predefinito è solitamente 30 secondi. Quando un’operazione supera questo limite, PHP la interrompe e genera l’errore.

Le situazioni più comuni:

  • Installazione o aggiornamento di plugin pesanti: plugin come WooCommerce, Elementor o WPML possono richiedere più tempo durante l’installazione.
  • Importazione di contenuti: importare articoli, pagine o prodotti in massa richiede tempo di elaborazione.
  • Aggiornamento del core di WordPress: il download e l’installazione dell’aggiornamento possono superare il timeout.
  • Rigenerazione dei thumbnail: rielaborare migliaia di immagini richiede tempo.
  • Plugin mal ottimizzati: un plugin con codice inefficiente può impiegare troppo tempo per eseguire le sue operazioni.
  • Server lento: hosting condivisi con risorse limitate impiegano più tempo per le operazioni.

Soluzione 1: aumentare max_execution_time in wp-config.php

Il metodo più semplice è aggiungere questa riga al file wp-config.php, prima della riga “That’s all, stop editing!”:

set_time_limit(300);

Questo imposta il limite a 300 secondi (5 minuti) per gli script eseguiti da WordPress. È sufficiente per la maggior parte delle operazioni.

Soluzione 2: modificare php.ini

Se hai accesso al file php.ini del server, puoi modificare il parametro direttamente:

max_execution_time = 300

Dopo la modifica, riavvia PHP-FPM o Apache per applicare la nuova impostazione. Questo metodo cambia il limite per tutte le applicazioni PHP sul server, non solo WordPress.

Per trovare il file php.ini corretto, crea un file phpinfo.php nella root del sito con il contenuto <?php phpinfo(); ?>, aprilo nel browser e cerca “Loaded Configuration File”. Ricorda di eliminare il file phpinfo.php dopo l’uso perché espone informazioni sensibili sul server.

Soluzione 3: usare .htaccess

Se il server usa Apache e non hai accesso a php.ini, puoi aggiungere questa direttiva al file .htaccess nella root di WordPress:

php_value max_execution_time 300

Nota: questa direttiva funziona solo con Apache e il modulo mod_php. Se usi PHP-FPM (comune su server moderni), questa direttiva viene ignorata e devi usare php.ini o il pannello hosting.

Soluzione 4: dal pannello hosting

La maggior parte dei pannelli di hosting permette di modificare i parametri PHP senza toccare file di configurazione:

  • cPanel: vai su Software → Seleziona versione PHP → Opzioni PHP → max_execution_time.
  • Plesk: vai su Siti web e domini → Impostazioni PHP → max_execution_time.
  • DirectAdmin: vai su Account Manager → PHP Configuration.

Questo è il metodo più sicuro e semplice per la maggior parte degli utenti.

Soluzione 5: aumentare il limite di memoria

A volte l’errore di execution time è collegato a memoria insufficiente. PHP deve allocare e deallocare memoria ripetutamente, rallentando l’esecuzione. Aumenta il limite di memoria in wp-config.php:

define('WP_MEMORY_LIMIT', '256M');

Per il pannello admin, che spesso richiede più memoria:

define('WP_MAX_MEMORY_LIMIT', '512M');

Quando l’errore indica un problema più grave

Se l’errore si verifica regolarmente durante la normale navigazione del sito (non solo durante aggiornamenti o importazioni), potrebbe indicare un problema più profondo:

  • Plugin con loop infiniti: un bug nel codice di un plugin che causa un ciclo senza fine. Disattiva i plugin uno alla volta per identificare il colpevole.
  • Query al database troppo lente: tabelle non indicizzate o query mal scritte che impiegano troppo tempo. Usa il plugin Query Monitor per identificare le query lente.
  • Server sottodimensionato: se il server è troppo lento per gestire il carico, aumentare il timeout è solo un cerotto. Considera un upgrade dell’hosting.
  • Attacco in corso: un attacco brute force o DDoS può sovraccaricare il server e causare timeout su operazioni normalmente veloci.

In questi casi, aumentare il timeout non risolve il problema di fondo. Devi identificare e risolvere la causa.

Valori consigliati

Non impostare il timeout a valori troppo alti. Un valore di 300 secondi (5 minuti) è sufficiente per quasi tutte le operazioni. Valori più alti come 600 o 900 secondi sono giustificati solo per operazioni eccezionali come importazioni massive o migrazioni. Un timeout molto alto può mascherare problemi di performance e lasciare script malfunzionanti in esecuzione troppo a lungo, consumando risorse del server.

Serve assistenza?

Se l’errore “Maximum execution time exceeded” si ripresenta frequentemente e le soluzioni sopra non bastano, potrebbe esserci un problema più profondo con il server o i plugin. Il team di SoccorsoWP può diagnosticare la causa e risolvere il problema definitivamente. Apri un ticket e rimetti in carreggiata il tuo WordPress.

Condividi:

Lascia un commento