Ваш вопрос состоит из двух частей: (1) планирование в будущем и (2) возможность отмены задания до этого времени.
Для (1) at
должно работать так же хорошо, как иуказан в этом вопросе, и парень даже разместил свой код обертки.Ты это пробовал?
Если вы не хотите использовать это, рассмотрите следующий сценарий:
- вставьте запись электронной почты для сообщения электронной почты, которое будет отправлено в базу данных, включая «timeSent»столбец, который вы установите в будущем на 1 минуту.
- у одного работника-шестерёнка (я объясню, почему он один), посмотрите в базе данных электронные письма, которые не были отправлены (например, некоторые
status
column = 0)) и куда timeSent
уже прошел, и отправьте их.
Итак, для (2), если вы хотите отменить электронное письмо до его отправки, просто обновите его столбец status
на что-то другое.
Ваш рабочий-механик должен быть один, потому что если у вас их несколько, они могут получить и попытаться отправить одну и ту же запись электронной почты.Если вам нужно несколько файлов, убедитесь, что тот, который получает запись по электронной почте, сначала блокирует ее непосредственно перед любыми трудоемкими операциями, такими как отправка по электронной почте (скажем, путем обновления этого столбца status
до чего-то другого).