Обзор
Плагин использует фоновые процессы для выполнения длительных задач без блокировки основного потока работы сайта. Это обеспечивает стабильную работу и предотвращает таймауты при обработке больших объемов данных.
Основные фоновые процессы
Импорт номенклатуры (BackgroundImport)
- Описание: Импорт товаров, модификаторов и категорий из iiko в WooCommerce
- Запуск: По расписанию (cron) или вручную
- Назначение: Синхронизация каталога товаров
Проверка удаленных товаров (BackgroundCheckRemoved)
- Описание: Удаление товаров из WooCommerce, которые были удалены в iiko
- Запуск: После импорта номенклатуры
- Назначение: Поддержание актуальности каталога
Проверка стоп-листов (BackgroundCheckStopList)
- Описание: Обновление статуса доступности товаров согласно стоп-листам iiko
- Запуск: По расписанию
- Назначение: Автоматическое управление наличием товаров
Синхронизация купонов (BackgroundCouponSync)
- Описание: Импорт скидок и промокодов из iiko
- Запуск: По расписанию
- Назначение: Автоматическое применение скидок
Синхронизация пользователей (BackgroundUserSync)
- Описание: Синхронизация данных пользователей между iiko и WordPress
- Запуск: По расписанию
- Назначение: Обновление профилей пользователей
Отправка платежей (BackgroundSendPayment)
- Описание: Передача данных об оплате в iiko для режима оплаты по столу
- Запуск: При оплате заказа
- Назначение: Синхронизация платежей с iiko
Удаление старых логов (BackgroundRemoveLogs)
- Описание: Очистка файлов логов старше 7 дней
- Запуск: По расписанию
- Назначение: Управление дисковым пространством
Как работают фоновые процессы
Механизм работы
- Инициирование: Процесс запускается по расписанию или вручную
- Очереди: Задачи добавляются в очередь для асинхронной обработки
- Батчи: Очередь разделяется на небольшие пакеты для предотвращения таймаутов
- Обработка: Каждый батч обрабатывается последовательно
- Завершение: При успешном завершении отправляются уведомления
Настройки расписания
WP Cron
- Основной механизм планирования задач WordPress
- Настраивается в
wp-config.phpили через плагины типа WP Crontrol
Интервалы выполнения
- Импорт номенклатуры: каждые 15-60 минут
- Проверка стоп-листов: каждые 5-15 минут
- Синхронизация пользователей: ежедневно
- Очистка логов: еженедельно
Настройка интервалов
php
// Пример настройки интервала в functions.php
add_filter('cron_schedules', function($schedules) {
$schedules['every_15_minutes'] = [
'interval' => 900,
'display' => 'Every 15 minutes'
];
return $schedules;
});Мониторинг и управление
Статус процессов
- Running: Процесс выполняется
- Idle: Процесс ожидает
- Queue Size: Количество задач в очереди
Управление через админку
- В разделе Инструменты → Фоновые процессы можно:
- Просмотреть статус всех процессов
- Отменить выполняющийся процесс
- Обновить статус в реальном времени
Логирование
- Все процессы записывают логи в файл
- Уведомления отправляются в админку и Telegram (если настроено)
- Логи автоматически очищаются через 7 дней
Устранение неполадок
Проблема: Процессы не запускаются
Решение:
- Проверьте настройку WP Cron
- Убедитесь, что отключены конкурирующие cron-задачи
- Проверьте логи на наличие ошибок
Проблема: Большая очередь задач
Решение:
- Увеличьте лимит памяти PHP
- Уменьшите размер батча в настройках
- Проверьте подключение к API iiko
Проблема: Таймауты выполнения
Решение:
- Увеличьте
max_execution_timeв php.ini - Разделите большие задачи на меньшие батчи
- Используйте сервер с лучшей производительностью
Проблема: Дублирование задач
Решение:
- Проверьте настройку интервалов cron
- Очистите очередь вручную через админку
- Отключите автоматический запуск процессов
Оптимизация производительности
Рекомендации
- Запускайте импорт в непиковые часы
- Мониторьте использование памяти
- Регулярно очищайте логи
- Используйте кеширование для часто запрашиваемых данных
Настройки производительности
- Размер батча: 10-50 элементов
- Таймаут запросов: 15-30 секунд
- Лимит памяти: минимум 256MB
- Max execution time: минимум 300 секунд
API для разработчиков
Хуки для кастомизации
php
// Хук перед запуском процесса
do_action('iiko_background_start', $process_class);
// Хук после завершения процесса
do_action('iiko_background_complete', $process_class, $action);
// Кастомный интервал для процесса
add_filter('iiko_background_import_cron_interval', function($interval) {
return 30; // минуты
});Создание собственного процесса
php
class MyCustomProcess extends Background {
protected $action = 'my_custom_process';
public static function get_title() {
return 'My Custom Process';
}
protected function task($item) {
// Логика обработки элемента
return false; // или следующий элемент
}
}Рекомендация
Регулярно проверяйте статус фоновых процессов в админке и настраивайте расписание в зависимости от нагрузки на сайт. :::</parameter