Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [inne][PHP]Zadania cron losowy przedział czasu - random cron jobs
Forum PHP.pl > Forum > Przedszkole
Deltix
Witam,
poszukuję podpowiedzi jak stworzyć zadanie cron które będzie się uruchamiało raz na godzinę w losowym odstępie czasu.

Z góry dziękuje za wszelkie info.
goartur
Mozesz latwiej to zrobic, odpalac crona co 1 minute i losowac godzine z minutami co 1h. Jesli aktualne odpalenie daty cron bedzie taka sama jak data wylosowana, wykonaj polecenie.
ctom
łatwiejszy sposób to odpalać skrypt co 1h i na początku :

Kod
$sleep = rand(0,59) * 60;
sleep($sleep);


z założenia zadania crona nie mają limitów czasowych na wykonywania się , ale czy to metoda jest optymalna dla Ciebie to sam musisz sprawdzić
kreatiff
Kolejna propozycja, umieszczamy na początku skryptu, który ma się wykonywać losowo raz na godzinę:
  1. $a = new DateTime();
  2. $a->setTime($a->format("H"), 0, 0); // resetowanie daty do pełnej godziny
  3. $ziarno = $a->getTimestamp(); // zmiana daty na timestamp, by użyć go jako ziarno losowości...
  4.  
  5. mt_srand($ziarno); // ... tutaj
  6. $minuta = mt_rand(0,59); // i teraz losujemy minutę, o której skrypt ma zostać wykonany, dzięki stałemu ziarnu (zmienia się raz na godzinę co pełną godzinę) będzie ona taka sama przez dokładnie 60 minut
  7.  
  8. if ( $minuta != date("i") ) exit;
Crona odpalamy co minutę, ale cały skrypt, który ma zostać wykonany co godzinę, wykona się dopiero wówczas, gdy minuta w aktualnej godzinie pokrywa się z tą w $minuta. W przeciwnym wypadku skrypt zostanie przerwany po sprawdzeniu tego warunku.
Pyton_000
  1. if(date('H') != mt_rand(0, 23))
  2. die()


i cron co 1h
KsaR
Cytat(Deltix @ 15.06.2015, 21:45:08 ) *
Witam,
poszukuję podpowiedzi jak stworzyć zadanie cron które będzie się uruchamiało raz na godzinę w losowym odstępie czasu.

Z góry dziękuje za wszelkie info.

Kod
1-23 */1 * * *

Spróbuj w tym kierunku skonfigurować crona.
1-23 czyli od 1 do 23 minut.
*/1 co godzine.
Napewno nie żaden z powyższych komentarzy.
Jeden źle przeczytał i reszta za nim .. facepalmxd.gif / lub tylko ja, niech się autor wypowie.
Pyton_000
Czego nie rozumiesz? Co godzinę ale w róznych odstępach. Czyli co 1h co 3h co 5h co 10h czyli interwał ma być 1h ale długość interwału losowa.
KsaR
Cytat(Pyton_000 @ 16.06.2015, 12:20:26 ) *
Czego nie rozumiesz? Co godzinę ale w róznych odstępach. Czyli co 1h co 3h co 5h co 10h czyli interwał ma być 1h ale długość interwału losowa.

To można popróbować zawsze inaczej(coś na podobe mojego przykładu), po co odrazu skrypt angażować do czegoś co powinno być w standardzie..
kreatiff
A ja do przeczytałem jeszcze inaczej. Wniosek z tego prosty, że pytanie nie jest zadane w sposób przejrzysty. Po co złość biggrin.gif
Przyjdzie autor, wyjaśni tudzież wybierze sobie co mu się podoba i voila.
KsaR
Cytat(kreatiff @ 16.06.2015, 12:41:43 ) *
(...)Wniosek z tego prosty, że pytanie nie jest zadane w sposób przejrzysty. Po co złość biggrin.gif
Przyjdzie autor, wyjaśni tudzież wybierze sobie co mu się podoba i voila.

+1, generalnie od koloru do wyboru biggrin.gif.
Deltix
@Ksar
Własnie w tym kierunku chciałbym iść - bez zmian w skrypcie a z poziomu ustawień samej komendy. Wszyscy to krytykują a to powinno być jako basic wink.gif

Problem polega na tym że sporo przetestowałem składni na podstawie tego co można na sieci poczytać (superuser czy stackoverflow) i wyniki sa dalekie od pożądanych.

Wszystkie inne głosy są również bardzo cenne, pozwolą wybrać najlepszą metodę, tzn. kompromis pomiędzy losowością a wygoda implementacji/zmian. Cel uświęca środki - dlatego tylko delikatnie sugerowałem na wstępie metody rozwiązania.

Klaryfikując jaki efekt chciałbym uzyskać, podaję przykładowe czasy: 1:13, 2:56, 3:34, 4:00 itp. itd.

Temat zamykam rozwiązaniem poszukiwanego zadania: sleep $(($RANDOM \% X))m
Losowość nie jest tu zbyt wielka, jednak jest to rozwiązanie które umożliwia z poziomu PA obsługę wielu skryptów równocześnie.

Dzięki za pomysły dotyczące samych skryptów.
kamil232
dzięki za pomoc
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.