Способы предотвращения многократного уведомления по электронной почте с php&mysql

Мой первый пост, но я получил много отличных ответов и советов от stackru. Это был закрытый звонок-> Как Facebook, Gmail отправляют уведомления в режиме реального времени? но не совсем, так что давайте вместе обсудим это.

У меня есть система CMS с почтовым уведомлением, когда на сайте вносятся изменения. Все работает очень хорошо, но я хочу предотвратить многократное уведомление, если somene внесет другое быстрое изменение, скажем, чтобы исправить опечатку. Использование php mail(), очевидно.

У меня два пути, один простой и один.... скажем так, довольно тяжелый... кашель. 3-й был вдохновлен внедрением уведомлений по электронной почте, но мне не кажется привлекательным отправлять сразу несколько электронных писем.

  1. Используйте отметку времени, чтобы проверить, было ли внесено другое изменение в "пусть говорят" за последние 5 минут.

  2. Запишите последнее изменение и сравните его с новым. Может быть полезно для резервного копирования в то же время, так как мне придется где-то сохранить изменения, но текст может быть длинным, и поиск по SQL будет проблематичным. Не так ли?

  3. Используйте cron для отправки изменений каждые x минут... убедите меня, если вы думаете, что это подходящее решение.

Любые идеи, комментарии или предложения ваши собственные? Ждем ваших отзывов, и так как я сейчас зарегистрирован, я сделаю все возможное, чтобы помочь вокруг.

Ура, все буду

1 ответ

Что касается работы cron, то это всегда хорошая альтернатива, поскольку она снимает часть нагрузки с обработки php для проверки времени, базы данных, дополнительных файлов и т. Д. Но имеет смысл только в том случае, если вы действительно ее используете, например, если у вас есть 10 пользователей, которые могут быть излишними. Если у вас есть 1000, то вам просто нужно оптимизировать процесс самой рассылки, но все равно это отличный вариант.

Что касается отметки времени, проверка базы данных постоянно в поисках изменений занимает много времени для системы и перегружает базу данных. если у вас нет таблицы, посвященной этому, только изменениям в сообщениях, то для системы не так много работы, плюс вы можете очищать устаревшие записи каждые несколько раз, когда используете информацию.

Запись последнего изменения самого поста и постоянное сравнение с новой / старой версией может быть слишком сложной для системы, если у вас много пользователей.

Итак, я буду использовать таблицу, посвященную изменениям в сообщениях, где у меня будет что-то вроде id_post, timestamp_of_the_change и mail_sent. Затем, после любого обновления этой таблицы, я проверю, было ли сообщение изменено в последнюю минуту или около того, и если это произойдет, я обновлю отметку времени, но не буду отправлять новое письмо, если только не завершится последний процесс отправки сообщения. почта не удалась, вот что я буду использовать в третьем поле.

до свидания

Другие вопросы по тегам