Дополнительная электронная почта от Cron Daemon при запуске скрипта списка рассылки - PullRequest
0 голосов
/ 05 августа 2011

У меня есть PHP-скрипт, который отправляет подписчикам двухнедельное напоминание. Каждый раз, когда он отправляет электронное письмо, он также отправляет электронное письмо от «Cron Daemon». Когда я впервые написал сценарий, он не отправлял это письмо, но теперь отправляет. У меня есть несколько вопросов по этому поводу.

Вот что написано в электронном письме:

Set-Cookie: PHPSESSID=((random letters and numbers here)); path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-type: text/html
  1. Что означает это письмо?
  2. Почему отправляется это письмо?
  3. Есть ли способ остановить отправку этого письма сценарием?

Ответы [ 2 ]

1 голос
/ 05 августа 2011

Cron читает stdout / stderr команды, которая выполняется, если что-то записывается, то cron отправляет электронное письмо.

Я полагаю, исполняемый файл php скомпилирован как "cgi" или "fcgi", поэтому он по умолчанию генерирует эти заголовки.

Чтобы решить эту проблему, у вас есть три возможных решения:

  • Используйте "cli" версию PHP
  • Перенаправьте stderr и stdout в / dev / null (это означает добавление > /dev/null 2>&1 к вашей команде cron).
  • Define MAILTO="" (см. эту страницу ).
0 голосов
/ 05 августа 2011

Полагаю, ваш PHP-скрипт выводит что-то на вывод.Если что-то будет визуализировано, cron перенаправляет это на электронную почту администратора по умолчанию.

Есть два решения:

1) Исправьте ваш PHP-скрипт, чтобы он вообще ничего не выводил.Иногда это сложнее, чем кажется, особенно для нетривиальных сценариев.

2) Предотвратите сценарий cron от когда-либо вывода.Недостатком этого метода является то, что вы не получите уведомление, когда скрипт не работает.Чтобы остановить вывод, используйте что-то вроде этого:

#Before
* * * * * php /path/to/script
#After
* * * * * php /path/to/script > /dev/null 2>&1
...