wpbackup.ru wordpress WPBackup.ru

Как использовать WP-Cron для настройки резервного копирования в WordPress

Что такое WP-Cron и зачем он нужен для резервного копирования WordPress

WP-Cron — это встроенный в WordPress механизм планирования задач, который позволяет запускать определённые действия через заданные интервалы времени. В отличие от системных cron-задач, WP-Cron запускается при обращении к сайту, что делает его удобным для хостингов без доступа к системному планировщику.

Для резервного копирования WordPress WP-Cron идеально подходит, так как позволяет автоматизировать процесс создания бэкапов базы данных и файлов, не требуя ручного запуска или сторонних сервисов.

Однако важно понимать, что из-за особенностей работы WP-Cron задачи могут запускаться с задержкой, если на сайт долго не заходят посетители. Поэтому для критичных проектов рекомендуется комбинировать WP-Cron с системными cron-задачами, если есть такая возможность.

Практическая настройка автоматического резервного копирования через WP-Cron

Регистрация новой задачи резервного копирования

Для начала нужно зарегистрировать собственное событие WP-Cron, которое будет запускать функцию резервного копирования. Это делается с помощью функции wpbackup_schedule_backup, которую мы создадим в нашем плагине или в файле functions.php темы.

function wpbackup_schedule_backup() {
    if ( ! wp_next_scheduled( 'wpbackup_daily_backup_event' ) ) {
        wp_schedule_event( time(), 'daily', 'wpbackup_daily_backup_event' );
    }
}
add_action( 'wp', 'wpbackup_schedule_backup' );

Здесь мы проверяем, есть ли уже запланированное событие с именем wpbackup_daily_backup_event, и если нет — создаём его с интервалом в 24 часа.

Определение функции, выполняющей резервное копирование

Теперь прикрепим обработчик к нашему событию. В нём мы можем реализовать сохранение копии базы данных и важных файлов.

function wpbackup_execute_backup() {
    global $wpdb;

    // Резервное копирование базы данных
    $backup_dir = WP_CONTENT_DIR . '/backups';
    if ( ! file_exists( $backup_dir ) ) {
        wp_mkdir_p( $backup_dir );
    }

    $filename = $backup_dir . '/db-backup-' . date( 'Y-m-d-H-i-s' ) . '.sql';
    $command = "mysqldump --user=" . DB_USER . " --password=" . DB_PASSWORD . " --host=" . DB_HOST . " " . DB_NAME . " > " . $filename;

    exec( $command );

    // Логирование результата
    error_log( 'WPBackup: Создан файл резервной копии базы данных: ' . $filename );
}
add_action( 'wpbackup_daily_backup_event', 'wpbackup_execute_backup' );

Обратите внимание, что функция использует системную команду mysqldump, которая должна быть доступна на сервере. Если команда недоступна, можно реализовать экспорт базы данных средствами PHP, например, через класс wpdb, но это сложнее и медленнее.

Добавление пользовательских интервалов для WP-Cron

По умолчанию WP-Cron поддерживает интервалы «часовой», «дневной» и «двухчасовой». Если нужно настроить резервное копирование, например, раз в 6 часов, необходимо добавить свой интервал.

function wpbackup_custom_cron_intervals( $schedules ) {
    $schedules['six_hours'] = array(
        'interval' => 6 * 60 * 60, // 6 часов в секундах
        'display'  => __( 'Каждые 6 часов' ),
    );
    return $schedules;
}
add_filter( 'cron_schedules', 'wpbackup_custom_cron_intervals' );

После этого можно заменить в функции wpbackup_schedule_backup параметр 'daily' на 'six_hours' для более частого резервного копирования.

Использование плагинов для расширения возможностей WP-Cron и резервного копирования

Хотя самостоятельное написание функций удобно, можно использовать готовые плагины, которые интегрируются с WP-Cron и облегчают управление задачами и бэкапами:

  • WP Crontrol — позволяет просматривать, редактировать и создавать задачи WP-Cron прямо из админки WordPress.
  • BackWPup — популярный плагин для резервного копирования, который умеет запускать задачи по расписанию через WP-Cron.
  • UpdraftPlus — мощный плагин с функцией автоматического бэкапа, управляемым через WP-Cron, с возможностью выгрузки на облачные хранилища.

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

Советы по надежности и мониторингу WP-Cron задач резервного копирования

При работе с WP-Cron важно учитывать ряд моментов для надежности:

  • Если сайт посещают редко, WP-Cron задачи могут запускаться с задержкой. В этом случае лучше настроить системный cron, который будет обращаться к wp-cron.php по URL с помощью wget или curl.
  • Добавляйте логирование в свои задачи, чтобы отслеживать успешное выполнение или ошибки.
  • Проверяйте доступность системных команд (например, mysqldump) и права на запись в директории для резервных копий.
  • Регулярно очищайте старые резервные копии, чтобы не переполнять диск.

Пример системного cron для запуска WP-Cron каждую пятую минуту:

*/5 * * * * wget -q -O - https://your-site.ru/wp-cron.php?doing_wp_cron >/dev/null 2>&1

Такой подход гарантирует своевременный запуск задач даже при низкой посещаемости сайта.

×
Оптимизируй свой сайт!

Скидка -15% на премиум плагин Clearfy Pro

Купить плагин сейчас ⋙