Создать задание cron с помощью пользовательского определения dtime

0

Я хочу создать задание cron, которое будет работать с пользователем, определяющим время в базе данных. Для eg.User может установить время начала и время окончания в базе данных. Когда достигнуто конечное время, я хочу, чтобы cron запускал один скрипт для отправки почты. Прежде всего, возможно ли это в cron или мне нужно пойти с каким-то другим подходом? и все это будет сделано на AWS EBS. Ниже я попытался на своей локальной машине просто отправить простое письмо, которое является слишком простым

*/1 * * * * /usr/bin/php -q/var/www/html/cronTry/cron.php
  • 1
    да, почему нет, извлеките записи вашей базы данных и передайте их сценарию оболочки, тогда ваш cron будет работать в соответствии с сохраненными значениями базы данных.
Теги:
amazon-web-services
cron
crontab

2 ответа

2
Лучший ответ

Вы не хотите запускать CRON каждую минуту, вместо этого создайте конкретную работу для своего пользователя и запустите ее один раз. Что-то вроде этого должно работать (непроверено - на мобильном телефоне)

$your_users_date;
$cmd = "sudo crontab -l | { cat; echo ". date("i H d m",strtotime($your_users_date))." * php /path_to_your_script.php arg1 arg2; } | crontab -";
shell_exec($cmd);

Это добавит задание в crontab в то время, когда ваш пользователь определил

  • 0
    спасибо большое, это сработало :)
  • 0
    Нет проблем. Возможно, на каком-то этапе вам нужно будет привести в порядок crontab, чтобы избавиться от всех мертвых заданий (если они не будут запущены в следующем году). Самое простое решение - записать их в базу данных и запустить другой cron, который проверяет используемые задания и удаляет их из crontab.
1

Получить динамические данные из базы данных, создать командную строку и

Вы можете легко запустить свой cron, передав команду в shell_exec()

  • 0
    Я дошел до передачи команды в shell_exec (), что я не получаю, так это о времени, в которое я должен запустить cron, потому что время вводится пользователем, и это может быть что угодно. Если я запускаю каждую секунду, разве это не будет нагрузкой на сервер?
  • 0
    @ Ankita.P Вы можете получить время, введенное пользователем из базы данных. Либо вы можете взять значение времени из POST или вы должны сохранить их в базе данных
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню