Автоматическая синхронизация остатков товаров из кассовой системы LiteBox (МТС-Касса) в интернет-магазин на OpenCart. Скрипт запускается по cron, получает актуальные остатки через LiteBox API, сопоставляет товары по артикулу и обновляет базу данных сайта.
Внедрено в эксплуатации: работает на production-магазине (2450 товаров), запуск каждые 30 минут, время выполнения 8.5 секунд.
Техническое решение:
• Маппинг товаров по артикулу
• Нормализация артикулов
• Batch UPDATE одним SQL-запросом
• Retry-логика при сбоях API
• Lock-файл для защиты от параллельного запуска
Архитектура:
• Standalone PHP-скрипт (без фреймворков)
• LiteBox REST API: справочник товаров + остатки
• Прямое обновление MySQL через PDO
• Dry-run режим для безопасного тестирования
Результат:
• Актуальность остатков: ±30 минут (вместо ручного обновления)
• Время синхронизации: 8.5 секунд на 2450 товаров
• Точность маппинга: 100% (автоматически)
• Идемпотентность (только реальные изменения)
Технологии: PHP 7.4, MySQL 5.7, LiteBox REST API, OpenCart 3.x, cron, PDO