Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] set_time_limit()
Romskey
post 23.08.2009, 03:41:19
Post #1





Grupa: Zarejestrowani
Postów: 45
Pomógł: 2
Dołączył: 16.02.2007

Ostrzeżenie: (0%)
-----


Witam

Czy jeżeli nie mam dostępu do php.ini mogę wydłużyć czas wykonania skryptu ?
Próbowałem z set_time_limit(); - ale nic to nie dało.

Gdzie dokładnie należy umieszczać set_time_limit() bo sprawdziłem chyba
wszystkie możliwości (także z manuala) - bez skutku.

pozdrawiam winksmiley.jpg

Go to the top of the page
+Quote Post
Solimo
post 23.08.2009, 07:10:33
Post #2





Grupa: Zarejestrowani
Postów: 39
Pomógł: 2
Dołączył: 11.08.2007

Ostrzeżenie: (0%)
-----


Zakładając że w php.ini masz np. 30s to zmieniając w pierwszej lini kodu na set_time_limit(60); zmieniasz max_execution_time na 1 minutę (60s). Jeżeli np. wstawisz ten set po jakiejś długiej pętli to wtedy tak jakby wyzerujesz licznik maksymalnego czasu i zezwolisz mu pracować kolejne 60s.



Ten post edytował Solimo 23.08.2009, 07:11:51
Go to the top of the page
+Quote Post
Quantum
post 23.08.2009, 08:20:15
Post #3





Grupa: Zarejestrowani
Postów: 450
Pomógł: 84
Dołączył: 27.11.2008
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


htaccess

Kod
php_value max_execution_time 90


powinno przedłużyć do 90 sekund
Go to the top of the page
+Quote Post
thek
post 23.08.2009, 10:16:49
Post #4





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




A wystarczy poczytać manual do set_time_limit. Jak byk tam pisze, że to ustawia czas działania skryptu od momentu w którym dochodzi do wywołania funkcji set_time_limit. Jeśli więc dasz na początku pliku to od tego miejsca będzie liczyło czas, jeśli wewnątrz pętli to przy każdym przejściu pętli będzie resetować licznik i ustawiać czas działania ponownie na X sekund. Tyle, że set_time_limit to nie zawsze dobre rozwiązanie. Przykład? Roześlij mailing do kilkuset użytkowników to zrozumiesz, że skrypt nie może chodzić w kółko przez zbyt długi czas bo mocno spowolnisz cały serwer, który będzie obciążony wywolaniem kilkuset funkcji mail wyciągajacych konkretne dane z bazy na dodatek. I nawet ustawienie tego w cron o 2-3 w nocy nic nie da. Sam ostatnio pisałem kod newslettera do serwisu gdzie liczba odsłon dziennie jest generowana w dziesiątkach tysięcy i musiałem ten problem z limitem obejść. Trzeba było podzielić wszystkich użytkowników na pakiety po iluś i potem rekurencyjnie po iluś sekundach musiał on wywoływać sam siebie, zabijając jednocześnie swoją poprzednia instancję. Inaczej jednoczesna próba wysłania maila do tylu użytkowników cały serwer mocno by zajechała i pewnie 503 by się skończyło dla odwiedzających.


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
Romskey
post 23.08.2009, 11:40:52
Post #5





Grupa: Zarejestrowani
Postów: 45
Pomógł: 2
Dołączył: 16.02.2007

Ostrzeżenie: (0%)
-----


może dokładniej opiszę problem.
Chodzi o upload plików na serwer przez FTP za pomocą formularza i PHP. Pierwotnie lokalnie
przy większych plikach ukazywał się komunikat o tym że czas wykonania skryptu został
przekroczony. Zmieniłem więc u siebie ustawienia w php.ini i wszystko działa w porządku.
W ramach testu zainstalowałem stronę na darmowym zagranicznym serwerze (wszystkie opcje
ale brak możliwości grzebania w ustawieniach) i tam skrypt wykonuje się tak jak wskazują ustawienia
czyli 10s. niezależnie gdzie umieszczamset_time_limit(); - czyli nie działa. Ja potrzebuję ok 900s .
Pliki są przesyłane na jeszcze inny serwer, na darmowym jest tylko formularz i kod uploadu FTP.


Sniffer
Stworzyłem .htacces i wpisałem kod ale niestety bez efektu. Czy to
właściwa składnia czy trzeba coś dodać ?

Ten post edytował Romskey 23.08.2009, 11:42:47
Go to the top of the page
+Quote Post
nexis
post 23.08.2009, 11:48:45
Post #6





Grupa: Zarejestrowani
Postów: 1 012
Pomógł: 109
Dołączył: 26.09.2003
Skąd: nexis.pl

Ostrzeżenie: (0%)
-----


Najprawdopodobniej administrator zablokował w takim razie możliwość zmiany limitu.


--------------------
Zend Certified Engineer

Kliknij POMÓGŁ jeśli moja odpowiedź okazała się użyteczna!
Go to the top of the page
+Quote Post
Quantum
post 23.08.2009, 11:49:30
Post #7





Grupa: Zarejestrowani
Postów: 450
Pomógł: 84
Dołączył: 27.11.2008
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


z jakiego serwera korzystasz?

Ten post edytował sniffer32 23.08.2009, 11:49:55
Go to the top of the page
+Quote Post
Romskey
post 23.08.2009, 11:52:22
Post #8





Grupa: Zarejestrowani
Postów: 45
Pomógł: 2
Dołączył: 16.02.2007

Ostrzeżenie: (0%)
-----


Nexis masz niestety rację .

Dzięki wszystkim winksmiley.jpg

P.S.
Sniffer32 (jeden z amerykańskich byethostów)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 18.07.2025 - 23:51