Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [inne][PHP]Zadania cron losowy przedział czasu - random cron jobs
Deltix
post 15.06.2015, 20:45:08
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 15.06.2015

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


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.
Go to the top of the page
+Quote Post
goartur
post 15.06.2015, 21:35:04
Post #2





Grupa: Zarejestrowani
Postów: 233
Pomógł: 27
Dołączył: 19.10.2014

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


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.
Go to the top of the page
+Quote Post
ctom
post 16.06.2015, 05:20:42
Post #3





Grupa: Zarejestrowani
Postów: 321
Pomógł: 55
Dołączył: 19.04.2009

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


ł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ć

Ten post edytował ctom 16.06.2015, 12:41:43


--------------------
Polecam MyDevil hosting idealny dla deweloperów
Go to the top of the page
+Quote Post
kreatiff
post 16.06.2015, 10:52:12
Post #4





Grupa: Zarejestrowani
Postów: 324
Pomógł: 105
Dołączył: 7.08.2012

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


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.

Ten post edytował kreatiff 16.06.2015, 10:53:47
Go to the top of the page
+Quote Post
Pyton_000
post 16.06.2015, 11:00:45
Post #5





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


  1. if(date('H') != mt_rand(0, 23))
  2. die()


i cron co 1h

Ten post edytował Pyton_000 16.06.2015, 11:01:08
Go to the top of the page
+Quote Post
KsaR
post 16.06.2015, 11:09:58
Post #6





Grupa: Zarejestrowani
Postów: 520
Pomógł: 102
Dołączył: 15.07.2014
Skąd: NULL

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


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.

Ten post edytował Ksar 16.06.2015, 11:11:10


--------------------
Go to the top of the page
+Quote Post
Pyton_000
post 16.06.2015, 11:20:26
Post #7





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


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.
Go to the top of the page
+Quote Post
KsaR
post 16.06.2015, 11:23:50
Post #8





Grupa: Zarejestrowani
Postów: 520
Pomógł: 102
Dołączył: 15.07.2014
Skąd: NULL

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


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..


--------------------
Go to the top of the page
+Quote Post
kreatiff
post 16.06.2015, 11:41:43
Post #9





Grupa: Zarejestrowani
Postów: 324
Pomógł: 105
Dołączył: 7.08.2012

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


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.
Go to the top of the page
+Quote Post
KsaR
post 16.06.2015, 11:44:52
Post #10





Grupa: Zarejestrowani
Postów: 520
Pomógł: 102
Dołączył: 15.07.2014
Skąd: NULL

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


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.

Ten post edytował Ksar 16.06.2015, 11:45:56


--------------------
Go to the top of the page
+Quote Post
Deltix
post 23.06.2015, 06:34:17
Post #11





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 15.06.2015

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


@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.


Ten post edytował Deltix 16.06.2015, 21:43:42
Go to the top of the page
+Quote Post
kamil232
post 23.06.2015, 12:21:59
Post #12





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 23.06.2015

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


dzięki za pomoc
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 12:42