Оповещения по электронной почте о сохраненных поисках, процедурах и правилах безопасности / производительности?

0

Я создал оповещение по электронной почте для моих пользователей (сейчас всего 2 000) поэтому каждую ночь crontab выполняет php script, который запрашивает mysql для поиска совпадений с сохраненным пользователем поиском. это классифицированный веб-сайт в моем случае, но я хотел бы узнать, если бы мне пришлось строить что-то для более крупных клиентов.

мои проблемы:

  • что произойдет, если мой пользователь вырастет x10 или x100 раз? это сервер, который собирается врезаться? есть подсказка, которую вы можете предложить на что-то подобное?

  • есть способ защитить файл cron/nightly_script.php, чтобы быть исполняемая форма вне вызова ее в URL-адрес браузера? рассматривать tham im, используя строку в crontab как:

    lynx [absolute url/ script.php]

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

спасибо!!!

Теги:
crontab

4 ответа

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

что произойдет, если мой пользователь вырастет x10 или x100 раз? это сервер, который собирается врезаться? есть подсказка, которую вы можете предложить на что-то подобное?

Ваш сервер может сбой/медленный процесс из-за большого использования памяти/процессора. Вы должны использовать очередь сообщений, например redis/beanstalkd/gearmand, чтобы активировать оповещения по электронной почте. Мои предпочтения уходят в redis. используйте блокировать pop/push с помощью predis библиотека, которая поддерживает блокировку pop/push.

есть способ защитить файл cron/nightly_script.php для выполнения формы, вызывая его в URL-адресе браузера? рассмотрите вопрос об использовании строка в crontab like:

Не используйте cron, если вы хотите масштабировать. Вместо этого создайте пару демонов.

  • 1, чтобы запланировать отправку сообщений (эта часть также может быть cron) в очередь сообщений,
  • 1 для обработки сообщений отправляется в очередь сообщений.

Демоны не обязательно должны появляться каждый раз, а нерестовые процессы (относительные) дороги. Во-вторых, ваш script больше не должен вызывать какой-либо URL-адрес, а вместо этого напрямую вызывает скрипты PHP (CLI).

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

При использовании очереди сообщений вы можете дросселировать себя!

1

Номер 1: Мониторинг сервера, просмотр загрузки и времени, которое требуется для запуска. Он не должен вылетать из строя, но вы можете обнаружить, что вы дошли до того уровня, когда загрузка высока, и запросы на веб-страницы начинают замедляться.

Но одна вещь, которую нужно посмотреть, это сбор памяти PHP иногда может быть нечетным, поэтому наблюдайте за использованием памяти cron. Если он попадет на высокий PHP, произойдет сбой.

Если он начинает получать много решений, есть много решений; нет необходимости иметь веб-сервер и отправку электронной почты на том же компьютере, например. Пока они могут обращаться к одному и тому же БД, настройте второй сервер только для отправки по электронной почте. Это то, что облачные вычисления идеально подходят, нанять 2-й сервер 4 часа в сутки (или что-то еще) и отключить его в остальное время.

Это всего лишь одно предложение... есть много решений, и это действительно зависит от вашей ситуации.

1
  • Ну, вы, вероятно, должны изменить свой script, чтобы вы могли распространять нагрузку. Например, вы можете запускать cron 4+ раз в день и каждый раз, когда он делает процент от базы пользователей, вместо того, чтобы делать их все один раз в день.

  • Вы можете извлечь его из целевого пути веб-сервера и поместить cron где-то, что я не доступен снаружи. Он может быть выполнен следующим образом: php/location/of/ script.php

  • Я думаю, это будет зависеть от того, к кому вы его отправляете, но вы должны подумать, как часто вы отправляете это уведомление.

0

Что касается номера 2, лучшим решением было бы переместить script за пределы корня документа, чтобы он не был доступен из браузера и не вызывал его напрямую

php [location/script.php]

Если вы не можете этого сделать, я бы выполнил проверку IP и разрешил его только вызывать из localhost IP.

Вы также можете создать безопасные проверки: хранить, когда последний раз, когда вы отправляли электронное письмо конкретному пользователю, было проверено, перед отправкой другого. Это защитит от проблем crontab, а также от хакеров.

  • 0
    Почему вы создали 2 ответа?
  • 0
    @alfred Это 3 совершенно отдельных вопроса в 1, каждый из которых является отдельной областью знаний ... и я сделал один, потом подумал, что сделаю другой, и хотя это было 2 больших вопроса для редактирования.
Показать ещё 1 комментарий

Ещё вопросы

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