Użytkownicy mojej aplikacji muszą mieć możliwość zaplanowania uruchomienia określonego zadania w określonych godzinach (np. tylko raz, co minutę, co godzinę itp.). Moim planem jest, aby cron co minutę uruchamiał skrypt, aby sprawdzić, czy aplikacja ma zadania do wykonania. Jeśli tak, wykonaj zadania.

Pytania:

  1. Czy uruchamianie crona co minutę to dobry pomysł?
  2. Jak modelować w interwałach bazy danych, tak jak robi to cron (np. co minutę, co 5 minut co godzinę itp.)?

Używam LAMP.

2
StackOverflowNewbie 27 lipiec 2011, 03:43
Nie wiem, czy używasz Javy, czy nie, ale możesz rzucić okiem na Quartz Scheduler. quartz-scheduler.org
 – 
Jared Farrish
27 lipiec 2011, 03:55
Może to być również przydatne do przejrzenia (przewiń w dół do przykładów): quartz-scheduler .org/docs/tutorials/crontrigger.html
 – 
Jared Farrish
27 lipiec 2011, 03:57
Możesz spojrzeć na to jako na punkt wyjścia: phpjobscheduler.co.uk
 – 
Jared Farrish
27 lipiec 2011, 04:49
Ponadto, jeśli chodzi o przechowywanie harmonogramu crona, możesz po prostu przechowywać wyrażenie crona. Są dość łatwe do zrozumienia. Musiałbyś poprawić formularz internetowy, aby umożliwić użytkownikom tworzenie wyrażeń, ale nie wyobrażam sobie, że musiałoby to być aż tak trudne (w zależności od tego, jak bardzo chcesz, aby było złożone). download.oracle.com/docs/cd/ E14003_01/doc/doc.1014/e12030/…
 – 
Jared Farrish
27 lipiec 2011, 05:14

2 odpowiedzi

Najlepsza odpowiedź

Lub zamiast wykonywać jakąkolwiek, wiesz, prawdziwą pracę, po prostu stwórz interfejs dla użytkowników, a następnie opublikuj wpisy w cron! Zamiast mieć crona dzwoniącego do ciebie co minutę, niech wywołuje skrypty zgodnie z zaleceniami użytkowników. Kiedy dodają lub zmieniają zadania, przepisz crontab.

Nie ma sprawy.

W unixie cron pozwala każdemu użytkownikowi (to znaczy loginowi unixowemu) mieć własną tabelę crontab, więc możesz mieć jedną dedykowaną dla swojej aplikacji, nie musisz do tego używać crontab root.

1
Will Hartung 27 lipiec 2011, 04:12
Przypuszczam, że jest to możliwe. Oznacza to, że każdy użytkownik konta musiałby mieć skojarzonego użytkownika uniksowego. To może być trochę skomplikowane???
 – 
StackOverflowNewbie
27 lipiec 2011, 04:16
Nie, chodziło mi po prostu o to, że masz użytkownika powiązanego z twoją aplikacją i używasz tego pliku crontab -- nie ma powodu, aby każdy użytkownik aplikacji miał użytkownika uniksowego.
 – 
Will Hartung
27 lipiec 2011, 04:22
Myślę, że ten pomysł może być wykonalny. Zastanowię się jeszcze trochę. Czy zrobiłeś coś takiego?
 – 
StackOverflowNewbie
27 lipiec 2011, 05:00
Nie, używałem Javy i napisałem własny harmonogram. To było trochę pracy, a cron i tak naprawdę nie nadawał się do tego. Ale dla ciebie to całkiem proste. Zakładając, że możesz przekonwertować zadanie, które użytkownik chce uruchomić na skrypt powłoki, możesz przechwycić ustawienia zadania (typ, dane wejściowe, harmonogram itp.) do wewnętrznej tabeli zadań w bazie danych, a następnie użyć tej tabeli do utwórz skrypt (być może nazwany tak jak klucz podstawowy), a następnie po prostu zrzuć plik crontab, a następnie użyj 'crontab -u', aby go przeładować.
 – 
Will Hartung
27 lipiec 2011, 06:19
Właśnie zdałem sobie sprawę, że może to być trudne do wdrożenia. Muszę umożliwić użytkownikowi modyfikację tych zadań (np. zmianę częstotliwości itp.). Ponadto dla każdego zadania należy określić datę rozpoczęcia i zakończenia; cron tego nie obsługuje, prawda? Myślę, że będę potrzebował rozwiązania bazodanowego zamiast próbować manipulować plikiem cron. Co myślisz?
 – 
StackOverflowNewbie
28 lipiec 2011, 03:01

Czy masz na myśli, że masz serię zadań zdefiniowanych przez użytkownika, które wymagają wykonania w określonych przez użytkownika odstępach czasu, i chcesz, aby cron ułatwiał przetwarzanie tych zadań? Jeśli tak, chciałbyś mieć bazę danych z co najmniej 2 polami: JOB, OFTEN

Gdzie CZĘSTO oznacza, jak często chcieliby, aby zadanie było uruchamiane, używając składni podobnej do CRON.

Wtedy musisz napisać skrypt (w Pythonie, Ruby lub podobnym języku), aby przeanalizować te dane. ten skrypt będzie uruchamiany co 1 minutę za pośrednictwem twojego rzeczywistego crona.

Spójrz na to pytanie StackOverflow i to pytanie StackOverflow, dotyczące sposobu analizowania danych crontab za pomocą Pythona.

0
Community 23 maj 2017, 14:55