it-swarm-ru.tech

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

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

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

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

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

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

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

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

6
Wietse Venema

Используйте функцию ведения журнала, например this , чтобы она записывала ваш журнал в debug.log, настроив ваш 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);

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

6
leeand00

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

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

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

2
Annika Backstrom