Czy można używać PHP do tworzenia, edycji i usuwania zadań crontab?
Wiem, jak wyświetlić listę bieżących zadań crontab użytkownika Apache:
$output = shell_exec('crontab -l');
echo $output;
Ale jak dodać zadanie crona w PHP? 'crontab -e' po prostu otworzy edytor tekstu i będziesz musiał ręcznie edytować wpisy przed zapisaniem pliku.
A jak usunąć zadanie cron za pomocą PHP? Ponownie musisz to zrobić ręcznie przez 'crontab -e'.
Z takim ciągiem zadań:
$job = '0 */2 * * * /usr/bin/php5 /home/user1/work.php';
Jak dodać go do listy zadań crontab w PHP?
Odpowiedzi:
Użycie polecenia crontab
Więc,
Powyższe może być używane zarówno do tworzenia, jak i edycji / dołączania, pod warunkiem, że użytkownik ma odpowiednie uprawnienia do zapisu plików.
Aby usunąć zadania:
Zwróć również uwagę, że Apache działa jako konkretny użytkownik i zwykle nie jest to root, co oznacza, że zadania cron mogą być zmieniane tylko dla użytkownika Apache, chyba że nadano mu
crontab -u
uprawnienia użytkownika Apache.źródło
shell_exec('crontab -l')
zwróci tylko ostatnią linię. Użyłemexec('crontab -l', $output)
. Następnie imploduj tablicę wyjściową $ w łańcuch (z \ n jako klejem).system()
,passthru()
,shell_exec()
iexec()
spróbuj za pomocą panelu sterowania, który pochodzi z gospodarzem, takie jak cPanel lub Plesk.Niedawno przygotowaliśmy mini projekt (PHP> = 5.3) do zarządzania plikami cron do zadań prywatnych i indywidualnych. To narzędzie łączy i zarządza plikami cron, dzięki czemu można ich używać, na przykład w ramach projektu. Dostępne testy jednostkowe :-)
Przykład z wiersza poleceń:
Próbka z API:
Zarządzanie poszczególnymi zadaniami z API:
github: php-crontab-manager
źródło
Sprawdź cronjob
Dołącz cronjob
Usuń plik crontab
Przykład
źródło
crontab -l
\ n'. $ polecenie. '" | crontab -', $ wyjście); czy to jest poprawne. Nie otrzymuję pliku crontab dla danych www "-": 0: złe błędy minutowe w pliku crontab, nie można zainstalować.To powinno wystarczyć
źródło
Wypróbowałem poniższe rozwiązanie
}
kredyty dla: Crontab Class to Add, Edit and Remove Cron Jobs
źródło
Możesz spróbować zastąpić
EDITOR
zmienną środowiskową czymś w rodzaju,ed
który może przyjąć sekwencję poleceń edycji na standardowe wejście.źródło
Zależy, gdzie przechowujesz swój plik crontab:
źródło
Możesz umieścić swój plik w /etc/cron.d/ w formacie cron. Dodaj unikalny prefiks do nazwy pliku Aby wyświetlić listę zadań cron specyficznych dla skryptu, po prostu pracuj z listą plików z unikalnym prefiksem. Usuń plik, jeśli chcesz wyłączyć zadanie.
źródło
Fajnie ...
Spróbuj tego, aby usunąć określone zadanie crona (przetestowane).
źródło
exit;
poheader('Location: ...');
. Ta forma jest również dość niebezpieczna, ponieważ może dodać zadanie crona do „zniszczenia” serwera.Najłatwiejszym sposobem jest użycie polecenia shell_exec do wykonania skryptu bash, przekazując wartości jako parametry. Stamtąd możesz manipulować crontabami, tak jak w każdym innym nieinteraktywnym skrypcie, a także upewnić się, że masz odpowiednie uprawnienia, używając sudo itp.
Zobacz to, Crontab bez crontab -e , aby uzyskać więcej informacji.
źródło
Zamiast crontab można również użyć kolejki zadań silnika aplikacji Google . Ma hojny darmowy przydział, jest szybki, skalowalny, modyfikowalny.
źródło
To proste Możesz to zrobić curl, upewnij się, że curl jest zainstalowany na serwerze:
do wyzwalania co minutę: * * * * * curl --request POST ' https://glassdoor.com/admin/sendBdayNotification '
minuta godzina dzień miesiąc tydzień
Powiedzmy, że chcesz wysyłać to powiadomienie codziennie o 14:15 Możesz zmienić POST / GET na podstawie swojego API:
15 14 * * * curl --request POST 'url url API'
źródło