Как мне регистрировать действия плагина (cron)?


Существует ли рекомендуемый способ регистрации (неудачных) действий cron из вашего плагина? Например, у меня есть плагин, который синхронизируется с внешней службой каждый час. Я хочу записать, сколько было изменено, но также и когда произошла ошибка синхронизации. Что бы вы порекомендовали здесь? Новая таблица базы данных? Плагин Регистрирует устаревшие уведомления делает это с пользовательским типом записи, но это может быть слишком накладно? Я считаю, что WordPress не поставляется со стандартным ведением журнала упаковка?

Author: Jan Fabry, 2010-09-02

3 answers

  1. Используйте файл для записи событий. Здесь есть несколько недостатков;

    • Разрешения файловой системы . При развертывании приложения вам придется позаботиться о том, чтобы не забыть предоставить веб-серверу разрешение на запись в файл. И чтобы быть более уверенным, вам придется написать код, который проверяет, можете ли вы записывать в файл, и выдает предупреждение, когда вы не можете. Это добавляет сложности и, вероятно, является причиной развертывания проблемы.
    • Случайное удаление . Вы можете случайно удалить пользовательский файл журнала и потерять свои записи. Это может быть неудобно.
    • Пользовательский формат журнала. Вам нужно будет придумать пользовательский (машиночитаемый?) текстовый формат для записи событий в ваш файл. Когда вам нужно изменить формат журнала, нет удобного способа перенести старые записи. Если вы хотите провести какой-то анализ журналов, вам придется проанализировать записи. Это приводит к большему количеству кода и еще больше сложности. Сложность - это плохо.
  2. Используйте таблицу базы данных. Создайте свою собственную таблицу базы данных и регистрируйте в ней события. Ни один из перечисленных выше недостатков не применим. Это не добавляет большой сложности. Автоматизируйте создание и удаление таблицы с помощью подключаемого модуля, и, я думаю, у вас есть достаточно надежная система ведения журналов.

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

  4. Используйте регистратор операционной системы. При использовании функции системного журнала в PHP вы можете записывать события в системный журнал (системный журнал в Unix, журнал событий в Windows NT). Настройка пользовательского системного журнала усложняет развертывание.

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

Надеюсь, это поможет!

 7
Author: Wietse Venema, 2011-03-02 19:27:45

Используйте функцию ведения журнала, такую как эта , чтобы она записывала ваш журнал для отладки.войдите, настроив свой wp-config.php со следующим, что я нашел здесь:

/**
 * This will log all errors notices and warnings to a file called debug.log in
 * wp-content (if Apache does not have write permission, you may need to create
 * the file first and set the appropriate permissions (i.e. use 666) ) 
 */
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
@ini_set('display_errors',0);

Это должно работать, по крайней мере, для целей отладки/разработки (я не уверен, насколько это было бы здорово для ведения производственного журнала, но это работает для разработки.)

 7
Author: leeand00, 2011-02-02 04:56:13

Я согласен, размещение этих данных в wp_posts потенциально может привести к быстрому росту таблицы до неуправляемого размера. Это нормально - создать таблицу. Я бы сделал все возможное и дал кому-нибудь возможность очистить таблицу журналов в случае, если они перестанут использовать свой плагин.

Я не боюсь плагинов, которые создают таблицы, но, возможно, это потому, что я видел базы данных WordPress с 8 000 000 записей wp_term_relationships и 300 000 сообщений, и я знаю, насколько неприятным может быть этот опыт.

dbDelta() и register_activation_hook() будут твоими друзьями, здесь. См. Создание таблиц с помощью плагинов.

 2
Author: Annika Backstrom, 2010-09-02 15:26:12