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... |
|
|
|
![]() |
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. |
|
|
|
Asver [PHP]Jak ominąć maksymalny czas wykonywania skryptu 17.06.2010, 19:38:34
Wave w shellu nie masz metatagów.
nieskończona pętla wh... 17.06.2010, 19:50:37
Asver Cytat(Wave @ 17.06.2010, 20:50:37 ) w... 17.06.2010, 19:57:48
Spawnm set_time_limit(0); nie dajesz w ustawieniach php t... 17.06.2010, 20:01:53
Asver Ustawiłem sobie w pętli po sleepie set_time_limit(... 17.06.2010, 21:51:34
thek Bo rozwiązania dopasowuje się zawsze do sytuacji. ... 17.06.2010, 22:14:53
Asver Emm.... skrypcik śmiga cały czas. Jedno mnie martw... 25.06.2010, 21:19:12 ![]() ![]() |
|
Aktualny czas: 17.02.2026 - 10:12 |