Błąd krytyczny: przekroczono maksymalny czas wykonywania 300 sekund


89

Ciągle otrzymuję ten błąd PHP:

Błąd krytyczny: przekroczono maksymalny czas wykonywania 300 sekund

Próbowałem ustawienie moje max_execution_timei moich max_input_timeustawień w pliku php.ini (zarówno Apache i CLI) do 0, -1i 4000sekund.

I nadal pojawia się błąd mówiący:

Błąd krytyczny: przekroczono maksymalny czas wykonywania 300 sekund

Mój skrypt działa ponad 300 sekund, zanim otrzymam tę wiadomość

Uruchamiam skrypt za pomocą wiersza poleceń.

Sprawdziłem też mój, phpinfo()więc zobacz, którego php.iniużywam.

Co ciekawsze, próbowałem ustawić max_execution_timei ustawić max_input_timena 5 sekund, a mój skrypt będzie działał znacznie dłużej niż 5 sekund, zanim otrzymam:

Błąd krytyczny: przekroczono maksymalny czas wykonywania 300 sekund


Na jakiej konfiguracji serwera jesteś?
Pekka

1
To takie dziwne, że mam ten sam problem na Apache 2.4.18 i php 7 ... Używanie PHPMyAdmin do importowania sql .. phpinfo (); zgłasza inny czas .. spróbuję ustawienia ini chyba :(
Michael Fever

ten sam problem, próbuję ustawić set_time_limit (3603); ini_set ('max_execution_time', 3604); ale oba nie mają wpływu, maksymalny czas wykonania nadal wynosi 360.
Infor Mat

Odpowiedzi:


68

Na początku swojego skryptu możesz dodać.

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

2
dodaj go na samej górze pliku php
Tules

2
Ta linia kodu obniży maksymalne ograniczenie czasu wykonywania kodu, pozwalając kodowi php na ciągłe działanie (teoretycznie).
Technotronic

2
w którym skrypcie?
Sagar Kodte

Lub set_time_limit(0);= to samo.
Íhor Mé

99

Jeśli używasz WAMP, przejdź do:

Zwiększ max_execution_timein, php.inia następnie przejdź do

C:\wamp\apps\phpmyadmin3.4.10.1\libraries (zmień ścieżkę zgodnie z instalacją)

otwórz config.default.phpi zmień wartość na $cfg['ExecTimeLimit']0:

$cfg['ExecTimeLimit'] = 0;

To rozwiąże problem z importem PhpMyAdmin.


@Vipin, twoje rozwiązanie pomogło mi, zwłaszcza że config.default.php ;-)
Rishi Kulshreshtha

Chętnie pomoże ! Pozdrawiam :)
Vipin Dubey

dziękuję, po wielu godzinach frustracji podczas próby uaktualnienia bazy danych 500 MB do nowszej wersji moodle ...... Mam sukces. W szczególności Moodle 2.2 - 2.6.
jamesTheProgrammer

2
Dzięki za tę odpowiedź! Pomogłem w moim problemie po tym, jak zdałem sobie sprawę, że ustawienie maksymalnego czasu wykonania w php.ini nie wystarczyło!
Rimble

1
config.default.phpbardzo wyraźnie mówi, że nie edytuje się go, mówiąc nam, abyśmy config.inc.phpzamiast tego edytować . Próbowałem go znaleźć i nie mogłem, więc zrobiłem własny i dodałem <?php $cfg['ExecTimeLimit'] = 3000; ?>. To nic nie dało. Postanowiłem spróbować to zrobić config.default.phpi zadziałało !! Jak mamy to zrobić config.inc.php?!?
BillyNair

67

Użytkownicy Xampp

  1. Iść do xampp\phpMyAdmin\
  2. Otwórz config.inc.php
  3. Szukaj $cfg['ExecTimeLimit'] = 300;
  4. Ustaw większą wartość lub zmień na 0, aby uzyskać nieograniczone
  5. Jeśli nie znaleziono, dodaj $cfg['ExecTimeLimit'] = 0;(lub większą wartość)
  6. Zapisz plik i zrestartuj serwer

8
To dosłownie jedyna rzecz, która zadziałała dla mnie. Dzięki za wysłanie wiadomości. W mojej konfiguracji $ cfg ['ExecTimeLimit'] = 300; nie istniał w config.inc.php, więc dodałem go tam, zamiast zmieniać wartość w config.default.php - jest dość duży komunikat, że nie wolno dotykać kodu w tym pliku;)
Ian

4
dzięki za wyróżnienie restartu serwera . najważniejsza rzecz do zapomnienia.
Pradeep Kumar Prabaharan

4
W pliku config.default.php znajduje się notatka o treści „Nie !! Nie edytuj”. Dodałem $ cfg ['ExecTimeLimit'] = 0; do mojego pliku config.inc.php, ponieważ nie istniał i wydawało się, że działa.
brandozz

1
ten post uratował mi dzień i pomógł mi po raz drugi !!! jak mogę dodać jeden po 3 miesiącach ???
saber tabatabaee yazdi

24

Spotkałem się z podobną sytuacją i okazuje się, że Codeigniter (framework PHP, z którego korzystałem) w rzeczywistości wyznacza własny limit czasu:

W system / core / Codeigniter.php, wiersz 106 w wersji 2.1.3 pojawia się:

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

Ponieważ nie było innego sposobu, aby uniknąć zmiany pliku core, usunąłem go, aby umożliwić konfigurację przez php.ini, a także dać nieskończony maksymalny czas wykonania żądania CLI.

Zalecam jednak nagranie tej zmiany gdzieś w przypadku przyszłych aktualizacji wersji CI.


7
O. MÓJ. DOBROĆ. Nie mogę w to uwierzyć. Dlaczego ten cholerny świat miałby ograniczać czas egzekucji oprócz wszystkich innych limitów czasu egzekucji, które już istnieją? Straciłem na to godziny. Dziękuję za wysłanie wiadomości.
fool4jesus

1
To niewiarygodne. Skomentowałem linię i działa! Dlaczego CI miałby nadpisywać domyślne domyślne PHP i nie dostarczać dokumentacji na ten temat ?!
Phil Cross,

Jeśli to czytasz i używasz ExpressionEngine (który jest zbudowany na CodeIgniter) ... No cóż - zgadnij co - EE zastępuje nadpisanie CI! Będziesz musiał edytować zarówno /system/codeigniter/system/core/Codeigniter.php wiersz 106, ORAZ /system/expressionengine/libraries/Core.php, wiersz 64. Odkrywając to, spędziłem trzy godziny przyjemnie. .
Jack

@PhilCross Jeśli znasz funkcję, która wymaga więcej czasu, możesz skorzystać z sugestii Jessa i umieścić ją set_time_limit(0);w tej funkcji. Nie musisz zmieniać rdzenia: ta instrukcja zresetuje limit czasu, więc nie musisz martwić się o inne linie w rdzeniu lub w innych pakietach podczas uruchamiania tej konkretnej funkcji.
Armfoot

9

Spróbuj wykonać w swoim skrypcie coś takiego:

set_time_limit(1200);

3
set_time_limit(0);sprawia, że ​​twój skrypt działa wiecznie.
Jonathon

23
set_time_limit(0); pozwala twojemu skryptowi działać wiecznie.
Jess Telford,

6

Oto prawidłowa odpowiedź:

iść do

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

znajdź i ustaw

$cfg['ExecTimeLimit'] = 0;

uruchom ponownie wszystkie usługi i gotowe.


Doskonała odpowiedź, dziękuję @llioor
kach

5

przejdź do xampp / phpmyadmin / libraries / config.default.php

i wprowadź następujące zmiany

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

3

Dla użytkowników 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

Domyślny czas wykonania CLI PHP jest nieskończony.

Ustawia maksymalny czas w sekundach, przez jaki skrypt może działać, zanim zostanie zakończony przez parser. Zapobiega to obciążaniu serwera przez źle napisane skrypty. Domyślne ustawienie to 30. Podczas uruchamiania PHP z wiersza poleceń domyślnym ustawieniem jest 0.

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

Sprawdź, czy uruchamiasz PHP w trybie awaryjnym, ponieważ ignoruje on przez cały czas ustawienia exec.


1

Dla lokalnego AppServ

Idź do C: \ AppServ \ www \ phpMyAdmin \ libraries \ config.default.php

Znajdź $cfg['ExecTimeLimit']i ustaw wartość na 0.

Więc to będzie wyglądało

$cfg['ExecTimeLimit'] = 0;

1

Jeśli korzystasz z xampp i używasz phpMyadmin do importowania dużych plików sql i zwiększyłeś maksymalny czas wykonania, maksymalny limit wysyłania plików i wszystko, co potrzebne, a jeśli żadna z powyższych odpowiedzi nie działa

Przejdź do folderu xampp, w moim przypadku tutaj jest względna ścieżka do pliku, który muszę zmodyfikować: 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;


działa $ cfg ['ExecTimeLimit'] = 0; . dzięki
MindRoasterMir

0

UŻYTKOWNICY WAMP:

1) Przejdź do C: \ wamp \ apps \ phpmyadmin

2) Otwórz config.inc

3) Dodaj $ cfg ['ExecTimeLimit'] = '3600 ′; do pliku.

4) Zapisz plik i zrestartuj serwer.

Ten plik nadpisuje php.ini i będzie działał dla Ciebie!


0

W moim przypadku, kiedy napotkałem ten błąd w Phpmyadmin, wypróbowałem MySQL-Front i pomyślnie zaimportowałem moją bazę danych .

Uwaga: nadal możesz użyć rozwiązań podanych w tym pytaniu, aby rozwiązać problem w programie Phpmyadmin.


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

0

Jeśli powyższe odpowiedzi nie zadziałają, spróbuj sprawdzić swój kod `` Z mojego doświadczenia, posiadanie nieskończonej pętli również spowoduje ten problem. Sprawdź inne oświadczenie if.


0

W wersji Codeignitor 3.0.x system / core / Codeigniter.php nie zawiera ograniczenia czasowego, a także wstawiania

ini_set('MAX_EXECUTION_TIME', -1);  

nie zadziała, ponieważ Codeignitor zastąpi to swoją własną funkcją set_time_limit (). Więc albo musisz usunąć tę funkcję z Codeignitor, albo po prostu możesz ją wstawić

set_time_limit('1000');

na początku pliku php, jeśli chcesz zmienić to na 1000 sekund. Ustaw czas na 0 (zero), jeśli chcesz go uruchamiać tak długo, jak chcesz.


0

Na Xampp, w php.ini musisz też sprawdzić mysql.connect_timeout. Na przykład zmień to na:

mysql.connect_timeout = 3600

Ten czas będzie zawsze liczony w sekundach (czyli 1 godzina w moim przykładzie)


0

Edycja pliku php.ini MAMP USERS rozwiązuje ten problem - jest linia:

max_execution_time = 30; Maksymalny czas wykonania każdego skryptu w sekundach

ustawienie tego na wyższą wartość zadziałało.

plik znajduje się w php / php5.6.25 / conf / php.ini (oczywiście musisz zmoczyć plik dla używanej wersji php - możesz to sprawdzić w preferencjach MAMP.


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.