„Funkcja set_time_limit () i dyrektywa konfiguracyjna max_execution_time wpływają tylko na czas wykonania samego skryptu. Każdy czas spędzony na działaniach, które mają miejsce poza wykonaniem skryptu, takich jak wywołania systemowe za pomocą system (), operacje strumieniowe, zapytania do bazy danych itp. nie jest uwzględniany przy określaniu maksymalnego czasu działania skryptu. Nie jest to prawdą w systemie Windows ”Z dokumentacji PHP
Jacob Sánchez
Odpowiedzi:
722
Twoja pętla może być nieskończona. Jeśli tak nie jest, możesz przedłużyć maksymalny czas wykonania w następujący sposób:
set_time_limit (300) może być użyty do tymczasowego przedłużenia limitu czasu.
Omn
Czy jest ustawiony tylko dla tego jednego skryptu, czy wpłynie na wszystkie inne skrypty wykonane po tym na tym samym serwerze?
Rao,
1
@Rao tak, będzie to tylko dla tego jednego skryptu. Aby zrobić to dla wszystkich skryptów, musisz to zmienić w pliku php.ini. możesz także zrobić set_time_limit (0); jeśli chcesz, aby skrypt działał wiecznie lub przez długi czas
Haseeb
31
ini_set ('max_execution_time', 0); // bez limitu
Junaid Atari
3
@sangam Powiedziałbym, że najlepszą praktyką jest utrzymanie tego limitu na jak najniższym poziomie, przy jednoczesnym zapewnieniu pewnej ilości dodatkowego bufora. Ze względów bezpieczeństwa nie chciałbym go całkowicie wyłączać. To powinno być rozsądne. Właściwie ustawiłem go na dwukrotność czasu, jaki mój najdłużej działający skrypt zajmuje do ukończenia na średnim poziomie obciążenia serwera. Mimo to zawsze może zawieść. Najlepszą praktyką jest więc osobne radzenie sobie z problemami z limitami czasochłonnymi skryptami.
Hafenkranich,
185
Miałem ten sam problem i rozwiązałem go, zmieniając wartość parametru max_execution_timew php.ininastępujący sposób:
max_execution_time =360; Maximum execution time of each script, in seconds (I CHANGED THIS VALUE)
max_input_time =120; Maximum amount of time each script may spend parsing request data;max_input_nesting_level = 64 ; Maximum input variable nesting level
memory_limit =128M ; Maximum amount of memory a script may consume (128MB by default)
@HarshaMV Ma na myśli profil wydajności, aby ustalić, dlaczego skrypt zaczyna się powoli, i zoptymalizować kod, aby skrócić czas wykonywania. Może to być przydatne lub nie, w zależności od wąskiego gardła (procesor vs. dyskowe operacje we / wy vs. sieć).
Dan Bechard,
12
jeśli wszystkie powyższe nie zadziałały, dodaj .htaccessplik do katalogu, w którym znajduje się skrypt i umieść go w środku
w ten sposób rozwiązałem mój problem, ani ini_set('max_execution_time', 86400);nie set_time_limit(86400)rozwiązałem mojego problemu, ale metoda .htaccess tak zrobiła.
W przypadku niektórych dostawców usług hostingowych może być konieczne ustawienie /home/[nazwa_użytkownika]/.php/7.0/phprc
expertCode
7
Może sprawdź coś, co zmieniłeś w pliku php.ini. Na przykład zmieniłem „; intl.default_locale =” na „; intl.default_locale = en_utf8” , aby włączyć „rozszerzenie internacjonalizacji (Intl)” bez dodawania „rozszerzenia = php_intl.dll”, wtedy wystąpił ten sam błąd. Proponuję więc sprawdzić podobne błędy.
Odpowiedzi:
Twoja pętla może być nieskończona. Jeśli tak nie jest, możesz przedłużyć maksymalny czas wykonania w następujący sposób:
i
może służyć do tymczasowego przedłużenia limitu czasu.
źródło
Miałem ten sam problem i rozwiązałem go, zmieniając wartość parametru
max_execution_time
wphp.ini
następujący sposób:Mam nadzieję, że to może ci pomóc.
źródło
php.ini
można znaleźć w/etc/php5/apache2/php.ini
.... Używam ubuntu 13.04 ...Wszystkie powyższe odpowiedzi są poprawne, ale w niektórych przypadkach używam prostego sposobu, aby tego uniknąć.
Wystarczy umieścić to polecenie na początku skryptu:
źródło
Napotkałem ten problem podczas aktualizacji do WordPress 4.0 . Domyślnie WordPress ogranicza maksymalny czas wykonania do 30 sekund.
Dodaj następujący kod do pliku .htaccess w katalogu głównym instalacji WordPress, aby zastąpić domyślny.
źródło
Edytuj php.ini
Znajdź tę linię:
Zmień jego wartość na 300:
300 oznacza 5 minut czasu wykonania dla żądania HTTP.
źródło
Upłynął limit czasu Twojego skryptu. Spójrz na funkcję set_time_limit (), aby zwiększyć czas wykonywania. Lub profiluj skrypt, aby działał szybciej :)
źródło
jeśli wszystkie powyższe nie zadziałały, dodaj
.htaccess
plik do katalogu, w którym znajduje się skrypt i umieść go w środkuw ten sposób rozwiązałem mój problem, ani
ini_set('max_execution_time', 86400);
nieset_time_limit(86400)
rozwiązałem mojego problemu, ale metoda .htaccess tak zrobiła.źródło
Możemy rozwiązać ten problem na 3 różne sposoby.
1) Za pomocą pliku php.ini
2) Korzystanie z pliku .htaccess
3) Korzystanie z pliku Wp-config.php (dla Wordpress)
źródło
Możesz usunąć ograniczenie, ustawiając je na zero, dodając ten wiersz u góry skryptu:
źródło
Podążaj ścieżką
/etc/php5(your php version)/apache2/php.ini
.Otwórz i ustaw
max_execution_time
żądaną wartość.źródło
Może sprawdź coś, co zmieniłeś w pliku php.ini. Na przykład zmieniłem „; intl.default_locale =” na „; intl.default_locale = en_utf8” , aby włączyć „rozszerzenie internacjonalizacji (Intl)” bez dodawania „rozszerzenia = php_intl.dll”, wtedy wystąpił ten sam błąd. Proponuję więc sprawdzić podobne błędy.
źródło
Zwiększ czas wykonywania skryptu, dodając następujący wiersz u góry skryptu PHP.
Odwołanie pochodzi z Zwiększenie czasu wykonywania skryptu PHP
źródło
Aby przedłużyć
max_execution_time
można użyć jednejini_set
lubset_time_limit
.!! Należy jednak pamiętać, że obie funkcje uruchamiają się ponownie, a także odliczanie czasu, który skrypt już wykonał
więc jeśli chcesz ustawić dokładny maksymalny czas działania skryptu, twoje polecenie musi być pierwsze.
Różnice między tymi dwiema funkcjami są
set_time_limit
nie zwraca informacji, czy się udało, ale wyświetla ostrzeżenie o błędzie.ini_set
zwraca starą wartość w przypadku sukcesu lub fałsz w przypadku niepowodzenia bez żadnego ostrzeżenia / błęduźródło
Możesz to zrobić z łatwością za pomocą WHM. Właśnie muszę:
(30 to domyślna zmiana na dowolną wartość)
źródło
Mam ten sam problem na stronie WordPress, dodałem plik .htaccess, a następnie działał dobrze dla mnie.
źródło
Wprowadziłem pewne zmiany w moim przypadku w: xampp \ phpMyAdmin \ libraries \ config.default.php
szukałem:
$cfg['ExecTimeLimit']
i zmień wartość po prawej stronie ...Możesz zmienić wartość prawej ręki na dowolną wyższą wartość, na przykład „5000”. i to działa.
źródło