Skocz do zawartości

cron, potrzebne odpalanie co pare sek.


jaclaw

Rekomendowane odpowiedzi

Potrzebuję odpalać pewien plik php co 3s. przez cały czas. Cron potrafi nie częściej niż co minutę, macie jakieś sprawdzone pomysły jak to obejść?

Ja wymyśliłem coś takiego:

cron odświeża mój plik co minutę, a w pliku przed "skryptem właściwym" daję

$i = 0;

while ($i < 19) {

a na koniec

sleep(3);

$i++;

}

Jednak to jak zaobserwowałem nie daje egzaminu... Proszę o pomoc.

Drukarka przestaje już drukować? Kup tusze i tonery na inkhouse.pl !

Odnośnik do komentarza
Udostępnij na innych stronach

Przebuduj skrypt. Cron niech go odpala co minutę tylko skrypt zrób w pętli. Tzn wykonuje się raz po uruchomieniu potem czeka 3 s, i znowu od nowa leci. Najlepiej złap czas pierwszego uruchomienia skryptu do jakiejś zmiennej i potem przed każdym wykonaniem kolejnej pętli niech sprawdza warunek czy różnica czasu uruchomienia skryptu od obecnego czasu jest mniejsza niż 1 minuta. Jeśli tak wykonuj pętle ze skryptem jeśli nie, wyłącz się.

Odnośnik do komentarza
Udostępnij na innych stronach

spookypld, przy założeniu, że autor tematu chciałby uruchomić skrypt co kilka sekund to faktycznie trafiłeś w sedno... jaclaw, uruchom co 5 minut i rozciągnij czas o rząd wielkości. :rofl:

Jeśli cytaty to tylko tutaj,

dla zrozumienia, czym są aforyzmy, tylko tam.

Czyżby Scylla?

Odnośnik do komentarza
Udostępnij na innych stronach

Przebuduj skrypt. Cron niech go odpala co minutę tylko skrypt zrób w pętli. Tzn wykonuje się raz po uruchomieniu potem czeka 3 s, i znowu od nowa leci.

No to wydaje mi się że tak zrobiłem, cronem odpalam co minutę plik ze skryptem siedzącym w pętli:

$i = 0;
while ($i < 19) {

*****

sleep(3);
$i++;
}

gdzie ***** to kod który chcę mieć odpalony co 3 sekundy.

To moje rozwiązanie niestety nie zdaje egzaminu. Macie jakieś pomysły na rozwiązanie tego?

Drukarka przestaje już drukować? Kup tusze i tonery na inkhouse.pl !

Odnośnik do komentarza
Udostępnij na innych stronach

A co chcesz konkretnie osiągnąć? Skrypt ma się uruchamiać 20 razy na minutę czy może wywoływać się przez minute tyle ile razy może jeżeli czas wykonania jest dłuższy niż 3 sekundy? Ile czasu sam skrypt się wykonuje?

To moje rozwiązanie niestety nie zdaje egzaminu

Dlaczego?

Jeżeli zależy ci konkretnie na 20 uruchomieniach możesz za pomocą crona ustawić 20 zadań i w każdym wywołaniu przekazywać do skryptu zmienną której wartością będzie konkretna sekunda minuty.

To oczywiście luźne przemyślenie, jak napiszesz coś więcej pewnie się znajdzie lepsze rozwiązanie ...

nihil fit sine causa

Odnośnik do komentarza
Udostępnij na innych stronach

Tak, Trotyl, chodzi o wywołanie skryptu 20 razy na minutę a nie raz na minutę.

Moje rozwiązanie nie działa, polegało ono na jednym poleceniu w cronie, odpalającym skrypt co minutę, wzięty w pętlę podaną wyżej.

Drukarka przestaje już drukować? Kup tusze i tonery na inkhouse.pl !

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli coś ma być odpalane 20 razy na minute to nie ma sensu tego podpinać pod crona, tu trzeba by było pomyśleć o napisaniu jakiegoś demona odpalanego jako usługa na serwerze. Tak jak to robisz nie działa, bo może to co masz zamiar wykonywać co 3 sekundy, zajmuje serwerowi więcej niż 3 sekundy i cały skrypt się zapycha. Myślę że w takim wypadku powinieneś zastanowić się nad całą koncepcją działania skryptu. Jeśli opiszesz dokładnie po co ci te wywołania co 3 sekundy może się znajdzie inne rozwiązanie, które nie będzie wymagało takiego obciążania serwera.

Odnośnik do komentarza
Udostępnij na innych stronach

Po prostu licz czas ale odpalaj HTTP asynchronicznie. Jak dedyk to wget, jeśli skrypt nie na dedyku to z pomocą curl_multi albo stream_context_create.

https://stackoverflow.com/questions/124462/...onous-php-calls

https://netevil.org/blog/2005/may/guru-multiplexing

https://petewarden.typepad.com/searchbrowse...to-post-an.html

etc.

Odnośnik do komentarza
Udostępnij na innych stronach

Nie znam problemu ale w pierwszym podejściu zastanowiłbym się jak uniknąć tak częstego odpalania skryptu bo po co obciążać serwer. Na pewno się nie da?

Nie wiem co skrypt ma robić ale jeśli ma coś sprawdzać w ramach własnego serwisu, to lepiej odpalać go asynchronicznie w momencie wizyt np. podpinając pod wywoływaną stronę, bo po co sprawdzać, co trzy sekundy jak przez minutę nie będzie gości - no chyba, że masz setki gości na minutę (w nocy tyż) :shok:

Odnośnik do komentarza
Udostępnij na innych stronach

jaclaw Twój myk powinien działać jeśli masz dedyka, jeśli zwykły to prawdopodobnie set_time_limit serwera ustawiony na mniej niż minuta zrywa połączenie

iDir - skrypt na katalog stron lub firm - następca projektu SEOKatalog, dostosowany do dzisiejszych standardów, w pełni responsywny, na nowoczesnym frameworku.

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności