xandeadx.ru Блог музицирующего веб-девелопера

Drupal → Ежедневно присылать на почту лог PHP ошибок

Опубликовано в

Код раз в день высылает на основную почту список PHP ошибок из watchdog:

/**
 * Implements hook_cron().
 */
function modulename_cron() {
  if (module_exists('dblog') && date('d') != date('d', variable_get('cron_last'))) {
    $last_send = strtotime('-1 day');
    $events = db_query("
      SELECT wid, type, message, variables, timestamp
      FROM {watchdog}
      WHERE type = 'php' AND timestamp >= :last_send
      ORDER BY wid
      LIMIT 100
    ", array(':last_send' => $last_send));
 
    if ($events->rowCount()) {
      $items = array();
      foreach ($events as $event) {
        $item = ($event->variables == 'N;') ? $event->message : t($event->message, unserialize($event->variables));
        $item = truncate_utf8(filter_xss($item, array()), 100, TRUE, TRUE);
        $item = l($item, 'admin/reports/event/' . $event->wid, array('absolute' => TRUE));
        $items[] = date('d.m.Y H:i:s', $event->timestamp) . ' ' . $item;
      }
 
      $site_mail = variable_get('site_mail', ini_get('sendmail_from'));
      drupal_mail('system', 'mail', $site_mail, language_default(), array(
        'context' => array(
          'subject' => 'PHP errors ' . date('d.m.Y H:i', $last_send) . ' - ' . date('d.m.Y H:i'),
          'message' => theme('item_list', array('items' => $items)),
        )
      ));
    }
  }
}
Написанное актуально для Drupal 7
Похожие записи

Комментарии RSS

Замечу, что запрос берет ошибки с последнего запуска cron "вчера" до первого запуска сегодня.
Т.е. если cron работает чаще , чем раз в сутки, то ошибки мы будем получать не все...

точно, исправил.

А теперь похоже, что он будет слать некоторые ошибки дважды)
Пусть крон запускается в 23:59. Мы получим ошибки за двое суток без одной минуты. Завтра в 23:59 - снова за двое суток :)
Все таки лучше использовать свою переменную, в которой хранить последнее время отправки уведомления

В чем преимущество использования db_query перед db_select? Или просто привычка?

Быстрее, проще.

Старая школа)

привет, вопрос не по теме, ты новые проекты разрабатуешь на друпал8?

Оставить комментарий

Содержимое этого поля является приватным и не будет отображаться публично. Если у вас есть аккаунт в Gravatar, привязанный к этому e-mail адресу, то он будет использован для отображения аватара.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступные HTML теги: <a> <i> <b> <strong> <code> <ul> <ol> <li> <blockquote> <em> <s>
  • Строки и параграфы переносятся автоматически.
  • Подсветка кода осуществляется с помощью тегов: <code>, <css>, <html>, <ini>, <javascript>, <sql>, <php>. Поддерживаемые стили выделения кода: <foo>, [foo].

Подробнее о форматировании