Cron PHP uruchamiany Cronem UNIX

0

Witam
Chciałbym zrobić w PHP cron'a który uruchamiany był by co minute przez Cron'a na serwerze. Cron PHP pobierał by listę rzeczy "do zrobienia" z bazy danych i je wykonywał sobie.
Lista rzeczy będzie różna od backup'a danych po uruchamianie zdalnie komend. Wszystkie akcje napisane są w PHP dlatego też chce zrobić crona za pomocą php.
Dlaczego sobie tych poszczególnych akcji nie dodam do Crona na serwerze, a bo jestem uparty i chce dodać tylko jeden wpis na serwerze a wszystkim zarządzać z panelu który mam napisany własno ręcznie.
Teraz pytanie czy ktoś spotkał się z czymś takim i ma jakieś rady/linki. I pytanie czy nie jest to porwanie się z motyką na księżyc?

0

nie, to jest do napisania w godzinę czy dwie.

przede wszystkim zwróć uwagę na to, żeby cron się nie uruchomił dwa razy, tj. masz w kolejce np. robienie backupu, to trwa 1,5 minuty, cron startuje o 22:00, robi backup, cron startuje o 22:01 i widzi w kolejce backup no to robi backup.

weź pod uwagę też to, że cron może się nie udać (restart serwera, albo po prostu coś się wysypie) i pasuje, żeby kolejne wywołanie podjęło kolejną próbę wykonania zadania (ew. odłożenie go na później)

ja to robię prymitywnie - na pliku o nazwie cron-running:

  1. uruchamiam skrypt
    1a. nie ma pliku to przez touch go tworzę
    1b. jeżeli jest, to sprawdzam, czy data modyfikacji jest starsza niż 15minut, jeżeli nie - przerywam działanie, jeżeli tak - robię touch
  2. wykonuję zadanie, jeżeli trwa długo, to dla pewności co pewien czas robię touch
  3. udało się wykonać zadanie - usuwam plik, żeby kolejny cron wystartował od razu
0

poszukaj hasła "php poor man's cron", można wykorzystać z cronem lub bez (bez - o ile masz ruch na stronie).

0

@vpiotr to rozwiązanie się nie nadaje jeżeli zadania w cronie wykonują się dłużej, już lepiej z zewnętrznych źródeł uruchamiać crona

0
dzek69 napisał(a):

@vpiotr to rozwiązanie się nie nadaje jeżeli zadania w cronie wykonują się dłużej, już lepiej z zewnętrznych źródeł uruchamiać crona

Zgadza się. W wypadku jakichś długich zadań których nie można robić iteracyjnie (np. pakowanie całej aplikacji z bazą danych) takiego pseudo-crona można inicjować np. z demona publikującego RSS-a na Twitterze, FB czy innym ... portalu. Tyle że będzie to rozwiązanie poor pełną gębą.

0

Najtańsze dobre hostingi kosztują 40zł/rok. Sporo/większość darmowych też ma crona. Więc w razie braku polecam zmianę hostingu, albo nawet wzięcie darmowego hostingu tylko po to, żeby gdzie indziej uruchamiał crona.

1 użytkowników online, w tym zalogowanych: 0, gości: 1