Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Jak ominąć maksymalny czas wykonywania skryptu, Dokładniej, żeby to ominięcie działało w cronie.
Asver
post
Post #1





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 17.06.2010

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


Witam.
Na wstępie - wiem że na tym forum jest kilka tematów z tym związanych, jednak nie mogę znaleźć żadnego, choć nie mało wiedzy z nich zaczerpnąłem wczoraj w nocy.

Zrobiłem sobie skrypcik do sprawdzania pozycji słów kluczowych wielu stron, ich site w google, ilości linków w yahoo, sprawdzania czy dodane wpisy w katalogach istnieją i czy są zaindeksowane, wpisuje to wszystko to ładnej bazy danych, ja sobie moge z panelu to wyświetlać w fajnych tabelkach... ogólnie robi za mnie masę roboty.
Żeby nie obrazić G. masą zapytań jakie ślę do niego, po każdym zapytaniu robię sleep(3). To implikuje problem przekroczenia maksymalnego czasu działania skryptu. Rozwiązałem wstawiając metatag refresh który odświeża skrypcik żaglując parametrami w linku.
Wszystko działa tak pięknie, że aż łzy mi do oczu nabiegają ze szczęścia, jednak do jego pełni pozostaje jeden szkopuł - aby skrypcik wywoływany był codziennie
bez udziału mojej woli.

Ku mojej rozpaczy, wklepanie do crona powoduje jeno jednorazowe wykonanie skryptu, bez odświerzania....

Proszę o radę, jak to zrobić, aby w cron uruchamiał skrypcik i ten leciał aż się nie skończy...

Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
thek
post
Post #2





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




Jeśli masz dostęp do cron to w zasadzie nie masz problemu. Cron to harmonogram zadań. Jeśli ustawisz mu wykonywanie się co minutę (najmniejszy możliwy odstęp czasowy dla zadań cron) - będzie wykonywał skrypt co minutę. Wtedy nawet limit czasu na 30 sekund nie będzie uciążliwy.
Co do set_time_limit(0) to ustawia się to na starcie skryptu. Jeśli jednak ma całość chodzić w kółko, to jest rozwiązanie jedno, ale średnio bezpieczne. Wywoływanie skryptu rekurencyjnie. Uruchamiasz skrypt, robisz coś, każesz mu wywołać samego siebie a pierwszego killujesz. Po drodze możesz ustawić sleepa jakiego chcesz i oczywiście user aborta musisz odpowiednio ustawić. Dzięki temu proces będzie wiecznie działał. Dzieje się tak, ponieważ wywołanie potomne nie jest zależne od poprzednika jeśli dobrze sprawę przemyślisz i zakończenie exitem rodzica nie wpływa na potomka, który w tym czasie mógł wywołać już nawet swoje kolejne "dziecko". To są jedne z "niebezpiecznych" wariantów skryptów, gdyż nie działa na nie nic innego jak ubijanie z poziomu konsoli. Inaczej nie da się ich zatrzymać. Stąd pisanie takich należy mocno obwarować warunkami wykonywalności, dobrze wszystko przemyśleć i jednak co jakiś czas zatrzymywać oraz dać "odpocząć" serwerowi by za choćby 2-3 minuty znów go cronem wywołać. Są to świetne do działań w tle skrypty, ale potrafią "zabić" serwer, jeśli są pisane bez przemyślenia.
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 17.02.2026 - 10:12