2013-04-02 21 views
34

Potrzebuję uruchomić skrypt do localhost (xampp), który wygeneruje 14400 rekordów i doda je do bazy danych, ustawiłem max_execution_time = 50000000000, nie wiem, czy mogę uczynić go nieograniczonym, ustawiając go na 0 lub -1. Ale próbowałem tego skryptu wcześniej z tym max_execution_time do 50000000000, a jednak zatrzymałem się w pewnym momencie, nie wiem, co jeszcze może ograniczyć czas wykonania, wiele razy to robiłem i jestem zmęczony czekaniem i niepowodzeniem znowu, co czy powinienem się zmienić, zanim ponownie uruchomię ten skrypt i tym razem, aby zakończyć pracę?Wykonaj wykonywanie skryptu bez ograniczeń

+0

wywołanie go z wiersza poleceń, bez ograniczenia czasowego w ten sposób –

+1

'set_time_limit (0)' na początku skryptu wyłącza limit czasu. Ale możesz mieć inny powód przedwczesnego postoju. Może to być problem z DB lub problem z pamięcią (jeśli tworzysz dużo obiektów). Sprawdź dziennik błędów PHP. – MatRt

+0

Gdzie się zatrzymuje (jak długo i ile wierszy zostanie wstawionych)? To samo za każdym razem czy zmienia się? Coś w logach błędów PHP? –

Odpowiedz

89

Będziesz musiał ustawić go na zero. Zero oznacza, że ​​skrypt może działać wiecznie. Dodaj następujące na początku skryptu:

ini_set('max_execution_time', 0); 

można znaleźć w dokumentacji PHP max_execution_time

zauważyć, że:

set_time_limit(0); 

będzie miał ten sam efekt.

+1

co jeśli ustawię go w pliku php.ini na 0? czy zacznie działać? – TooCooL

+4

Tak, ale nie ustanowiłbym tego na całym świecie. Oznaczałoby to, że na przykład nieskończona pętla (skryptu i nietestowanego lub hack) może zawiesić serwer. Używałbym 'max_execution_time = 0' z rozwagą i tylko jeśli jest to wymagane. – hek2mgl

+0

Muszę go uruchomić, gdy nie zrobię tego w lokalnej lokalizacji. Zmienię to później, ważne, żeby to działało, a nie zatrzymywało skryptu, zanim zakończy dodawanie rekordów. – TooCooL

0

Twój skrypt może się zatrzymać, nie z powodu przekroczenia czasu PHP, ale z powodu przekroczenia limitu czasu w przeglądarce, do której uzyskujesz dostęp do skryptu (np. Firefox, Chrome itp.). Niestety rzadko istnieje łatwy sposób na przedłużenie tego limitu czasu, a w większości przeglądarek po prostu nie można tego zrobić. Opcją, którą tu masz, jest dostęp do skryptu przez terminal. Na przykład w systemie Windows chcesz się upewnić, że plik wykonywalny PHP jest w zmiennej PATH, a potem myślę, że wykonanie:

C:\path\to\script> php script.php 

Lub, jeśli używasz CGI PHP, myślę, że to:

C:\path\to\script> php-cgi script.php 

Dodatkowo, w swoim skrypcie ustawisz także ini_set('max_execution_time', 0);, o czym wspomnieli inni. Kiedy uruchamiam skrypt PHP w ten sposób, jestem prawie pewien, że możesz użyć funkcji płukania bufora, aby okresowo odtwarzać postęp skryptu do terminalu, jeśli chcesz. Największym problemem, jaki myślę przy użyciu tej metody, jest to, że nie ma możliwości zatrzymania skryptu po jego uruchomieniu, poza zatrzymaniem całego procesu lub usługi PHP.

Powiązane problemy