Jump to content
wojtekk86

Problem z czasem wykonywania skryptów

Recommended Posts

Posiadam moduł do generowania plików dla porównywarek i mój problem polega na tym, że po załadowaniu wszystkich produktów moduł sie wysypuje powiedzmy, że się wyłacza i musze go zrestartowac aby działał poprawnie. Doszedłem już do tego, ze nie wyrabia mi serwer i powinienem zwiększyć czas wykonywania skryptu "set_time_limit" tylko w którym pliku jest zapisany ten parametr, żeby zwiększyćte 30s?

Share this post


Link to post
Share on other sites

wartość możesz zmienić w php.ini - aby to zrobić, musisz miec do tego pliku dostęp, jeżeli nie masz - zapytaj usługodawcę czy może to dla Ciebie zmienić (w co wątpię niestety)

Share this post


Link to post
Share on other sites

Napisałem na szybko prosty skrypt który przetestuje czy można zwiększyć samodzielnie ten limit na twoim hostingu. Dodaj ten kod do nowego pustego pliku .PHP i uruchom. Jeżeli teraz limit jest 30s to skrypt podziała przez 35s i wyświetli wynik czy się udało rozszerzyć dotychczasowe ograniczenie czasowe.

 

<?php
$start = (float) array_sum(explode(' ',microtime()));
$obecnyCzasLimitu = ini_get( 'max_execution_time' );
echo 'Obecny limit czasu: ' . $obecnyCzasLimitu . ' sekund<br />';
$wydluzonyCzasLimitu = $obecnyCzasLimitu + 10;
echo 'Wydluzony limit czasu: ' . $wydluzonyCzasLimitu . ' sekund<br />';
set_time_limit( $wydluzonyCzasLimitu );
$pauzaSkryptu = $wydluzonyCzasLimitu - 5;
sleep( $pauzaSkryptu );
$end = (float) array_sum(explode(' ',microtime()));
echo "Czas dzialania skryptu: ". sprintf("%.4f", ($end-$start))." sekund";
?>

Share this post


Link to post
Share on other sites

Napisałem na szybko prosty skrypt który przetestuje czy można zwiększyć samodzielnie ten limit na twoim hostingu. Dodaj ten kod do nowego pustego pliku .PHP i uruchom. Jeżeli teraz limit jest 30s to skrypt podziała przez 35s i wyświetli wynik czy się udało rozszerzyć dotychczasowe ograniczenie czasowe.

 

<?php
$start = (float) array_sum(explode(' ',microtime()));
$obecnyCzasLimitu = ini_get( 'max_execution_time' );
echo 'Obecny limit czasu: ' . $obecnyCzasLimitu . ' sekund<br />';
$wydluzonyCzasLimitu = $obecnyCzasLimitu + 10;
echo 'Wydluzony limit czasu: ' . $wydluzonyCzasLimitu . ' sekund<br />';
set_time_limit( $wydluzonyCzasLimitu );
$pauzaSkryptu = $wydluzonyCzasLimitu - 5;
sleep( $pauzaSkryptu );
$end = (float) array_sum(explode(' ',microtime()));
echo "Czas dzialania skryptu: ". sprintf("%.4f", ($end-$start))." sekund";
?>

 

super sprawa, będę polecał innym ;)

Share this post


Link to post
Share on other sites

Temat do zamknięcia niestety nie jestem w stanie zmienic tego parametru a technicy z hostingu gdzie utrzymywany jest sklep (pomijam fakt, że jest to jeden z wiekszych operatorów w Polsce) zaproponowali mi dokupienie pakietu, w między czasie pojawiły sie kolejene problemy związane z liczbą zapytań do serwera i przekraczaeniem parametrów bezpieczeństwa po kolejenj rozmowie z technikiem usłyszałem "niech pan nie dodaje już produktów lub poszuka sobie innego hostingu" i to była jedyna mądra rzecz jaką powiedział :). Zakupiłem sobie VPS i jestem w trakcie przenoszenia sklepu.

Share this post


Link to post
Share on other sites
(pomijam fakt, że jest to jeden z wiekszych operatorów w Polsce

 

najwięksi operatorzy w polsce oferują największy chłam ;) także nie ma się co dziwić, polecam forum webhostingtalk.pl

można tam znaleźć naprawdę dobre oferty które są w cieniu "mainstreamowych" operatorów, którzy na marketing i reklamę wydają krocie

 

btw. skąd vps? :)

Share this post


Link to post
Share on other sites

doskonały wybór, teraz masz możliwość dowolnej konfiguracji nie tylko presty, ale i całego serwera.

Da się odczuć poprawę w działaniu? Czy raczej sprawa niezauważalna?

Share this post


Link to post
Share on other sites

Musisz zrobić to w pliku konfiguracyjnym php.ini

Odszuać coś takiego : max_execution_time

ini_set('max_execution_time', 300); //300 sekund = 5 minut

Share this post


Link to post
Share on other sites

w php.ini nie ma init_set(); - tam zmienne definiowane są linia po linijce bez dodatkowych komend

 

komenda poprzedzona średnikiem nie działa, dlatego jeżeli masz tam średnik - usuń go 

Share this post


Link to post
Share on other sites

 

Musisz zrobić to w pliku konfiguracyjnym php.ini

Odszuać coś takiego : max_execution_time

ini_set('max_execution_time', 300); //300 sekund = 5 minut

Wprowadzam korektę - widocznie myślałem o czym innym i robiłem co innego :)

Powinno być tak jak mówisz Vekia. Odblokowanie opcji wiąże się z usunięciem średnika - zablokowanie jest poprzez jego dodanie. Wartość 1800 to czas serwera.

; Maximum execution time of each script, in seconds
; http://php.net/max-execution-time
; Note: This directive is hardcoded to 0 for the CLI SAPI
max_execution_time = 1800  

Share this post


Link to post
Share on other sites

Witam,

Czy jest sposób na zwiększenie czasu wykonywania skryptu w presta 1.6.1.3? Pytam z dwóch powodów.

1. Przy próbie aktualizacji 1-click update wyskakuje komunikat: PHP's max_execution_time setting has a high value or is disabled entirely (current value: 60 seconds) i te 60 sec to jest maximum jakie mogę ustawić.

2. Przy ponownym generowaniu miniatur: Tylko część zdjęć została zregenerowana, upłynął limit czasu serwera.

 

Share this post


Link to post
Share on other sites

Czas wykonywania skryptu nie jest zależny od presty a od konfiguracji serwera.

Podczas generowania miniatur po pierwszej nieudanej próbie odznacz opcje usuwania wcześniejszych zdjęć tak każda następna próba spowoduje że w końcu wszystkie miniatury zostanż wygenerowane.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More