Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript][HTML][PHP]Uruchamianie w losowym czasie skryptu PHP
Forum PHP.pl > Forum > Przedszkole
TajnyAgent
Witam, chciałbym, aby mój skrypt PHP był uruchamiany w losowym czasie między 1, a 10 minutą, najlepiej opiszę to na przykładzie:
Skrypt zostaje uruchomiony o godzinie 13:00, kończy działanie o 13:01 i gdy zakończy działanie skrypt ma zostać znów uruchomiony między 13:01, a 13:11 i w przypadku, gdy skrypt zostanie uruchomiony o 13:15, a kończy swoje działania o 13:16 to znów skrypt ma się uruchomić w okresie 10 minut, czyli pomiędzy 13:16, a 13:26. Czytałem o cron'ie, ale nie widziałem tam za bardzo opcji losowego uruchamiania skryptu i zależy mi, żeby to odliczanie tych 10 minut zaczęło się po zakończeniu działania skryptu. Z góry dziekuję za wszelką pomoc smile.gif
patwoj98
Hmm, a wykonywać cronem skrypt:
losuj daną liczbę x między 1-1000, jeśi wylosowano to zrób coś tam i zrób pause (np: 10 minut), a jeśli nie wylosowano to pauza 10 sekund (zależy od częstotliwości losowań smile.gif). Jeśli czas jest równy czasowi końca to wykonaj skrypt pomijając losowanie.
Myślę, że to może Ci pomóc.
TajnyAgent
Tyle, że ja nie chce, by skrypt po skończeniu działania zawsze odczekiwał 10 minut. Chcę, aby po prostu losował minutę w której ma zostać znów uruchomiony między 1, a 10 po zakończeniu działania. Czyli skrypt może odpalać się i co 2 minuty, jeżeli tak wylosuje.
@Edit
Tu nawet nie będzie potrzebny cron, może to nawet być nieskończona pętla, która będzie po prostu losowała odstęp między powtórzeniem działań skryptu. Tylko nie wiem za bardzo, jak to zrobić, w tej chwili mam uruchomioną nieskończoną pętle poprzez while i pauza 2 minutowa.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~
Dobra, chyba już rozwiązałem mój problem, tak jak już wcześniej pisałem, pozostawiłem swoją nieskończoną pętlę "while(true)", zmieniłem jedynie pauzę na taką: "sleep ( rand ( 60, 900);" Teraz chyba powinno działać tak, jak chciałem. W takim razie odchodząc od wątku, chciałbym by działanie skryptu było zapisane w logach, to znaczy kiedy pauza się zaczęła i kiedy się skończyła. Mógłby ktoś pomóc?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~

Udało mi się także zrobić te logi, tylko, że jest problem. Skrypt działa jedynie, gdy uruchomię go przez www, czyli przeglądarkę, natomiast, gdy odpalam go z poziomu konsoli, to już nie chce działać, ktoś wie jaki może być problem? O to kod:
  1. while(true)
  2. {
  3. $sleep_time = rand(60,900);
  4. $dane = date('Y-m-d H:i:s')." Uruchomilem pauze.\r\n";
  5. $file = "log.txt";
  6. $fp = fopen($file, "a");
  7. flock($fp, 2);
  8. fwrite($fp, $dane);
  9. flock($fp, 3);
  10. fclose($fp);
  11. sleep($sleep_time);
  12. $dane = date('Y-m-d H:i:s')." Przerwalem pauze po $sleep_time sekundach.\r\n";
  13. $file = "log.txt";
  14. $fp = fopen($file, "a");
  15. flock($fp, 2);
  16. fwrite($fp, $dane);
  17. flock($fp, 3);
  18. fclose($fp);
  19. };
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.