Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Kontrolowanie wykonywania crona w ssh
Forum PHP.pl > Forum > Przedszkole
ornitolog
Witam, mam napisane crony w php i uruchamiam je w ssh ze wzgledu na bardzo dlugi czas wykonywania. Niestety robie to recznie a chcialbym zautomatyzowac, pytanie tylko jak je wpisac do cronjobs jezeli nie ma max czasu wykonywania skryptu, on moze chodzic minute a moze i godzine. Jest jakas mozliwossc zeby z poziomu php sprawdzac czy skrypt jest uruchomiony ? Moze macie jakis inny pomysl zeby to kontrolowac ? Musi sie wykonywac tylko raz w jednym czasie i musi sie uruchamiac cyklicznie.

Myslalem o tym zeby wpisywac w plik informacje gdy sie wykonuje, i wpisywac gdy sie wykona ale jezeli bedzie po drodze jakis blad albo die() to lezy :/
Mlodycompany
możesz sobie zapisywać gdzieś pid odpalanego procesu i przy każdym odpaleniu sprawdzać czy jest uruchomiony proces w systemie z tym pidem i jeśli jest to robić die
lukaskolista
Trzeba zrobić prostą blokadę. Gdzieś zapisujesz coś, co świadczy o tym, że skrypt jest uruchomiony. W cronie ustawiasz uruchamianie np. co minutę. W skrypcie na podstawie tego czegoś zapisanego gdzieś tam sprawdzasz, czy skrypt pracuje. Jak pracuje, to przerywasz jego wykonywanie. Po zakończeniu wykonywania skryptu usuwasz taką blokadę.

Tym czymś gdzieś tam może być w najprostszym przypadku utworzenie pliku o nazwie unikalnej dla danego skryptu, ale niezmieniającej się, np. dla skryptu accountUpdate możesz tworzyć plik o nazwie account-update.

Powyższe rozwiązanie jest najprostszym z możliwych i ma sporo ograniczeń, ale się sprawdza. Ważne jest, aby w jakiś sposób przechwytywać błędy skryptu powodujące kończenie jego pracy w celu usunięcia blokady - inaczej plik zawsze będzie istniał i skrypt się już nie uruchomi.
Pyton_000
użyj do tego programu flock i ustaw cron np co 5 min:

Kod
flock -xn /home/vagrant/forever.lock -c php -f ./script_path/script.php
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.