Errore irreversibile: è stato superato il tempo massimo di esecuzione di 300 secondi


91

Continuo a ricevere questo errore PHP:

Errore irreversibile: è stato superato il tempo massimo di esecuzione di 300 secondi

Ho provato a fissare le mie max_execution_timee le mie max_input_timeimpostazioni di php.ini (sia apache e CLI) per 0, -1e 4000secondi ciascuno.

E ricevo ancora l'errore che dice:

Errore irreversibile: è stato superato il tempo massimo di esecuzione di 300 secondi

Inoltre, il mio script viene eseguito più di 300 secondi prima di ricevere questo messaggio

Sto eseguendo lo script tramite la riga di comando.

Ho anche controllato il mio phpinfo()così vedere quale php.inisto usando.

Ancora più interessante ho provato a impostare max_execution_timee max_input_timeimpostare su 5 secondi e il mio script verrà eseguito ben oltre i 5 secondi prima di ottenere:

Errore irreversibile: è stato superato il tempo massimo di esecuzione di 300 secondi


Che tipo di configurazione del server utilizzi?
Pekka

1
È così strano che ho lo stesso problema su Apache 2.4.18 e PHP 7 ... Utilizzo di PHPMyAdmin per importare sql .. phpinfo (); segnala tempi diversi .. Proverò l'impostazione ini immagino :(
Michael Fever

lo stesso problema, provo a impostare set_time_limit (3603); ini_set ('max_execution_time', 3604); ma entrambi non hanno effetto, il tempo massimo di esecuzione è ancora 360.
Infor Mat

Risposte:


69

All'inizio del tuo script puoi aggiungere.

ini_set('MAX_EXECUTION_TIME', '-1');

2
aggiungilo all'inizio del tuo file php
Tules

2
Questa riga di codice eliminerà la restrizione massima del tempo di esecuzione di un codice, consentendo a un codice php di essere eseguito per sempre (in teoria).
Technotronic

2
in quale copione?
Sagar Kodte

O set_time_limit(0); = stesso.
Íhor Mé

100

Se stai usando WAMP vai a:

Aumentare la max_execution_timein php.inipoi vai a

C:\wamp\apps\phpmyadmin3.4.10.1\libraries (cambia percorso in base alla tua installazione)

aprire config.default.phpe modificare il valore per $cfg['ExecTimeLimit']a 0:

$cfg['ExecTimeLimit'] = 0;

Questo risolverà il problema per le importazioni di PhpMyAdmin.


@Vipin, la tua soluzione mi ha aiutato, soprattutto quel config.default.php ;-)
Rishi Kulshreshtha

Felice di aiutare ! Saluti :)
Vipin Dubey

grazie, dopo ore e ore di frustrazione cercando di aggiornare un DB da 500 MB a una versione più recente di moodle ... ho avuto successo. Nello specifico moodle 2.2 - 2.6.
jamesTheProgrammer

2
Grazie per questa risposta! Ha risolto il mio problema dopo aver realizzato che l'impostazione del tempo massimo di esecuzione in php.ini non era sufficiente!
Rimble

1
config.default.phpè molto esplicito sul non modificarlo, dicendoci config.inc.phpinvece di modificare . Ho provato a trovarlo e non ci sono riuscito, quindi ho creato il mio e aggiunto <?php $cfg['ExecTimeLimit'] = 3000; ?>. Questo non ha fatto niente. Ho deciso di provare a farlo config.default.phpe ha funzionato !! Come dovremmo fare il config.inc.phplavoro?!?
BillyNair

68

Utenti Xampp

  1. Vai a xampp\phpMyAdmin\
  2. Apri config.inc.php
  3. Cercare $cfg['ExecTimeLimit'] = 300;
  4. Imposta un valore maggiore o cambia a 0 per illimitato
  5. Se non trovato aggiungi $cfg['ExecTimeLimit'] = 0;(o un valore maggiore)
  6. Salvare il file e riavviare il server

8
Questa è letteralmente l'unica cosa che ha funzionato per me. Quindi grazie per la pubblicazione. Nella mia configurazione, $ cfg ['ExecTimeLimit'] = 300; non esisteva in config.inc.php quindi l'ho aggiunto lì piuttosto che cambiare il valore in config.default.php - c'è un messaggio piuttosto grande che dice di non toccare il codice in quel file;)
Ian

4
grazie per aver evidenziato riavviare il server . punto più importante da dimenticare.
Pradeep Kumar Prabaharan

4
C'è una nota nel file config.default.php che dice "No !! Non modificare". Ho aggiunto $ cfg ["ExecTimeLimit"] = 0; al mio file config.inc.php poiché non esisteva e sembrava funzionare.
brandozz

1
questo post mi ha salvato la giornata e mi ha aiutato per la seconda volta !!! come posso più uno dopo 3 mesi ???
sabre tabatabaee yazdi

24

Ho riscontrato una situazione simile e si è scoperto che Codeigniter (il framework PHP che stavo utilizzando) in realtà imposta il proprio limite di tempo:

In system / core / Codeigniter.php, riga 106 nella versione 2.1.3 appare quanto segue:

if (function_exists("set_time_limit") == TRUE AND @ini_get("safe_mode") == 0)
{
    @set_time_limit(300);
}

Poiché non c'era altro modo per evitare di modificare il file core, l'ho rimosso in modo da consentire la configurazione tramite php.ini, oltre a dare il tempo di esecuzione massimo infinito per una richiesta CLI.

Tuttavia, consiglio di registrare questa modifica da qualche parte nel caso di futuri aggiornamenti della versione CI.


7
OH. MIO. BONTÀ. Non posso crederci. Perché il mondo sanguinoso dovrebbe limitare il tempo di esecuzione oltre a tutti gli altri limiti di tempo di esecuzione che già esistono? Ho sprecato ore su questo. Grazie per aver postato.
fool4jesus

1
È incredibile. Commentato la linea e funziona! Perché CI sovrascrive il valore predefinito PHP predefinito e non fornisce documentazione su di esso ?!
Phil Cross

Se stai leggendo questo e stai usando ExpressionEngine (che è costruito su CodeIgniter) ... Beh - indovina un po '- EE sovrascrive l'override di CI! Dovrai modificare sia /system/codeigniter/system/core/Codeigniter.php riga 106, E /system/expressionengine/libraries/Core.php, riga 64. Sono state tre ore divertenti della mia vita scoprirlo .. .
Jack

@PhilCross se conosci la funzione che deve essere eseguita più tempo, puoi usare il suggerimento di Jess e inserire set_time_limit(0);all'interno di quella funzione. Non è necessario modificare il core: questa istruzione ripristinerà il limite di tempo, quindi non è necessario preoccuparsi di altre righe nel core o in altri pacchetti durante l'esecuzione di quella specifica funzione.
Armfoot

10

Prova qualcosa di simile nel tuo script:

set_time_limit(1200);

3
set_time_limit(0);fa in modo che il tuo script venga eseguito per sempre.
Jonathon

24
set_time_limit(0); consente al tuo script di essere eseguito per sempre.
Jess Telford

6

Questa è la risposta giusta:

vai a

c:\wamp\apps\phpmyadmin3.4.10.1\libraries\config.default.php

trova e imposta

$cfg['ExecTimeLimit'] = 0;

riavvia tutti i servizi e fatto.


Risposta perfetta, grazie @llioor
kach

5

vai a xampp / phpmyadmin / libraries / config.default.php

e apporta le seguenti modifiche

from  $cfg['ExecTimeLimit'] = ’300′;
to  $cfg['ExecTimeLimit'] = ’0′;

3

Per gli utenti Xampp

1. Go to C:\xampp\phpMyAdmin\libraries
2. Open config.default.php
3. Search for $cfg['ExecTimeLimit'] = 300;
4. Change to the Value 300 to 0 or set a larger value
5. Save the file and restart the server
6. OR Set the ini_set('MAX_EXECUTION_TIME', '-1'); at the beginning of your script you can add.

1

Il tempo di esecuzione predefinito della CLI di PHP è infinito.

Questo imposta il tempo massimo in secondi che uno script può eseguire prima che venga terminato dal parser. Questo aiuta a prevenire che script scritti male leghino il server. L'impostazione predefinita è 30. Quando si esegue PHP dalla riga di comando, l'impostazione predefinita è 0.

http://gr.php.net/manual/en/info.configuration.php#ini.max-execution-time

Controlla se stai eseguendo PHP in modalità provvisoria, perché ignora tutte le impostazioni di esecuzione del tempo quando su quella.


1

Per Local AppServ

Vai a C: \ AppServ \ www \ phpMyAdmin \ libraries \ config.default.php

Trova $cfg['ExecTimeLimit'] e imposta il valore su 0.

Quindi sembrerà

$cfg['ExecTimeLimit'] = 0;

1

Se sei su xampp e utilizzi phpMyadmin per importare file sql di grandi dimensioni e hai aumentato il tempo max_execution, il limite massimo di caricamento dei file e tutto il necessario E se nessuna delle risposte precedenti funziona per te, vieni qui

Vai alla tua cartella xampp, nel mio caso ecco il percorso relativo al file che devo modificare: C: \ xampp \ phpMyAdmin \ libraries \ config.default.php

/** * maximum execution time in seconds (0 for no limit) * * @global integer $cfg['ExecTimeLimit'] * by defautlt 300 is the value * change it to 0 for unlimited * time is seconds * Line 709 for me */ $cfg['ExecTimeLimit'] = 0;


0

UTENTI WAMP:

1) Vai a C: \ wamp \ apps \ phpmyadmin

2) Apri config.inc

3) Aggiungi $ cfg ['ExecTimeLimit'] = '3600 ′; al file.

4) Salvare il file e riavviare il server.

Questo file sovrascrive il php.ini e funzionerà per te!


0

Nel mio caso, quando ho riscontrato quell'errore in Phpmyadmin, ho provato MySQL-Front e ho importato il mio DB con successo.

Nota: è comunque possibile utilizzare le soluzioni fornite in questa domanda per risolvere il problema in Phpmyadmin.


Hier gibt es nichts zu sehen ... :-)
rahul

0

Se le risposte di cui sopra non funzionano, prova a controllare il tuo codice, nella mia esperienza, anche avere un ciclo infinito causerà quel problema. Controlla la tua istruzione else if.


0

In Codeignitor versione 3.0.x il sistema / core / Codeigniter.php non contiene il vincolo temporale così come l'inserimento

ini_set('MAX_EXECUTION_TIME', -1);  

non funzionerà poiché codeignitor sovrascriverà quello con la propria funzione set_time_limit (). Quindi o devi eliminare quella funzione da codeignitor o semplicemente puoi inserire

set_time_limit('1000');

all'inizio del file php se vuoi cambiarlo a 1000 secondi. Imposta il tempo su 0 (zero) se vuoi eseguirlo per tutto il tempo che desideri.


0

Su Xampp, in php.ini devi controllare anche mysql.connect_timeout. Quindi, ad esempio, modificalo in:

mysql.connect_timeout = 3600

Quel tempo verrà sempre conteggiato in secondi (quindi 1 ora nel mio esempio)


0

UTENTI MAMP modificando php.ini risolve questo problema - c'è una riga:

max_execution_time = 30; Tempo massimo di esecuzione di ogni script, in secondi

impostandolo su un valore più alto ha funzionato.

il file è in php / php5.6.25 / conf / php.ini (ovvio che devi bagnare il file per la versione php che stai utilizzando - puoi scoprirlo dalle preferenze di MAMP.


0

Su wamp nella mia configurazione in cui ho più phpmyadmins, i valori nei file di configurazione sono stati sovrascritti in wamp/alias/phpmyadmin.conf. Ho impostato due righe lì:

1. php_admin_value max_execution_time 3600

2. php_admin_value max_input_time 3600

... finalmente ha funzionato!


-1

Puoi impostare il limite di tempo:

ini_set('max_execution_time', 1000000000000000);
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.