2012-01-05 2 views
1

В настоящее время я работаю над приложением PHP/MySQl. Ошибка 500 возникает, если есть ошибка, когда приложение не может восстановить и не может продолжить выполнение:Отправка сообщения по электронной почте 500 без спама

  • Не удалось подключиться к базе данных.
  • Запуск из дискового пространства
  • т.д.

Я хотел бы получать по электронной почте/smsed при возникновении такой ошибки. Проблема в том, что я не хочу, чтобы меня отправляли по электронной почте каждый раз, когда срабатывает ошибка 500. Если сайт очень занят, то за короткий промежуток времени можно легко получить сотни писем или SMS-сообщений.

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

Существует также вероятность того, что SMTP-сервер для отправки электронной почты может опуститься, но в этом случае я не думаю, что что-то действительно может быть сделано, и потребуется внешняя служба мониторинга.

Есть ли лучшие способы сделать это?

ответ

1

Нет, ваше решение, вероятно, является лучшим [простым] вариантом. Но сделайте это с уже существующим файлом. Создайте его где-нибудь в файловой системе, чтобы он существовал, даже если пространство заканчивается. Используйте touch(), чтобы обновлять время модификации каждый раз, когда возникает ошибка 500. Если filemtime() находился за последние [x] минуты, не отправляйте электронное письмо.

+0

И нет причин, по которым вы не можете сохранить этот файл на другом сервере (чтобы решить проблему с дисковым пространством), а затем использовать простой скрипт, который вы бы назвали, а затем проверить его ответ ... 1 = отправить письмо, 0 = не отправлять электронную почту. – NightHawk

+0

@ Райан, я в замешательстве. Пока файл состояния существует до того, как пространство заполняется, это не должно быть проблемой. – benesch

+0

Да, ваше абсолютно правильно, это просто еще один вариант. – NightHawk

0

Не является аффилированным или ничего, но Pingdom может вам помочь.

Смежные вопросы