Можно ли использовать PHP для создания, редактирования и удаления заданий crontab?
Я знаю, как вывести список текущих заданий crontab пользователя Apache:
$output = shell_exec('crontab -l');
echo $output;
Но как добавить задание cron с PHP? 'crontab -e' просто откроет текстовый редактор, и вам придется вручную отредактировать записи перед сохранением файла.
А как удалить задание cron с PHP? Опять же, вам нужно сделать это вручную с помощью crontab -e.
С такой строкой задания:
$job = '0 */2 * * * /usr/bin/php5 /home/user1/work.php';
Как мне добавить его в список заданий crontab с помощью PHP?
Ответы:
использование команды crontab
Так,
Вышеупомянутое может использоваться как для создания, так и для редактирования / добавления, если у пользователя есть соответствующие права на запись в файл.
Чтобы удалить задания:
Также обратите внимание, что apache работает от имени конкретного пользователя, который обычно не является пользователем root, что означает, что задания cron могут быть изменены только для пользователя apache, если пользователю apache не предоставлены
crontab -u
права.источник
shell_exec('crontab -l')
вернет только последнюю строку. Я использовалexec('crontab -l', $output)
. Затем сверните массив $ output в строку (с \ n в качестве клея).system()
,passthru()
,shell_exec()
иexec()
, попробуйте с помощью панели управления , которая поставляется с хостингом, такие как CPanel или Plesk.Недавно мы подготовили мини-проект (PHP> = 5.3) для управления файлами cron для частных и индивидуальных задач. Этот инструмент связывает файлы cron и управляет ими, чтобы вы могли использовать их, например, для каждого проекта. Доступны модульные тесты :-)
Пример из командной строки:
Пример из API:
Управление отдельными задачами из API:
github: php-crontab-manager
источник
Проверить cronjob
Добавить cronjob
Удалить crontab
пример
источник
crontab -l
\ n'. $ command. '" | crontab -', $ output); это правильно. Я не получаю crontab для www-data "-": 0: ошибки плохой минуты в файле crontab, не удается установить.Это должно сделать это
источник
Я попробовал решение ниже
}
кредиты: Класс Crontab для добавления, редактирования и удаления заданий Cron
источник
Вы можете попробовать переопределить
EDITOR
переменную среды чем-то вроде,ed
которое может принимать последовательность команд редактирования вместо стандартного ввода.источник
Зависит от того, где вы храните свой crontab:
источник
Вы можете поместить свой файл в /etc/cron.d/ в формате cron. Добавьте уникальный префикс к имени файла. Чтобы вывести список заданий cron, специфичных для скриптов, просто используйте список файлов с уникальным префиксом. Удалите файл, если хотите отключить задание.
источник
Хорошо ...
Попробуйте это, чтобы удалить конкретное задание cron (проверено).
источник
exit;
послеheader('Location: ...');
. Кроме того, эта форма на самом деле довольно опасна, так как может добавить задание cron для «уничтожения» сервера.Самый простой способ - использовать команду shell_exec для выполнения сценария bash, передавая значения в качестве параметров. Оттуда вы можете управлять crontab, как и в любом другом неинтерактивном скрипте, а также убедиться, что у вас есть правильные разрешения, используя sudo и т. Д.
См. Crontab без crontab -e для получения дополнительной информации.
источник
Вместо crontab вы также можете использовать очередь задач движка приложений Google . У него большая бесплатная квота, он быстрый, масштабируемый и модифицируемый.
источник
Это просто. Вы можете сделать это curl, убедитесь, что на сервере установлен curl:
для запуска каждую минуту: * * * * * curl --request POST ' https://glassdoor.com/admin/sendBdayNotification '
минута час день месяц неделя
Допустим, вы хотите отправлять это уведомление в 14:15 каждый день. Вы можете изменить POST / GET в зависимости от вашего API:
15 14 * * * curl --request POST 'url ur API'
источник