При перенесенні каталогу з ERP до PrestaShop вбудований імпортер впирається в ліміти PHP і не справляється з обсягом. Для production-задач з каталогом від 5 000 товарів стандартний інструмент вимагає тонкого налаштування або заміни на кастомне рішення з пакетною обробкою та управлінням пам'яттю. Маємо 7+ років досвіду в інтеграції PrestaShop, реалізовано понад 300 проєктів. Правильне налаштування імпорту товарів PrestaShop скорочує час завантаження каталогу на 60% і економить до 20 годин ручної праці на місяць. Досвід та сертифіковані спеціалісти гарантують стабільність імпорту. Розберемо, як правильно організувати імпорт/експорт товарів PrestaShop і уникнути типових помилок. Зв'яжіться з нами для безкоштовної консультації по вашому каталогу.
Помилки при імпорті товарів PrestaShop часто виникають через невідповідність структури CSV, неправильний маппінг атрибутів або перевищення лімітів PHP. Наші інженери налаштовують імпорт товарів PrestaShop з урахуванням особливостей вашого каталогу, забезпечуючи стабільне завантаження тисяч товарів.
Чому стандартний імпортер не підходить для великих каталогів?
Вбудований імпортер PrestaShop хороший для разових завантажень до 1 000 товарів. При спробі завантажити 10 000+ рядків процес падає з помилкою перевищення часу виконання або споживання пам'яті. Причина — в налаштуваннях PHP за замовчуванням: memory_limit = 128M, max_execution_time = 30 секунд. Для великих файлів потрібно явно збільшувати ці ліміти або переходити на пакетну обробку через API. Наприклад, на одному з проєктів каталог містив 50 000 SKU з варіаціями. Вбудований імпортер не осилив навіть 10% даних. Ми реалізували кастомний модуль з батчевим завантаженням через API, що дозволило завершити імпорт за 2 години.
Яку структуру CSV очікує PrestaShop?
PrestaShop-імпортер очікує фіксований набір полів. Роздільник і кодування налаштовуються при завантаженні:
ID;Active (0/1);Name *;Categories;Price tax excl.;Tax rules ID;Wholesale price;On sale (0/1);Discount amount;Discount percent;Discount from (yyyy-mm-dd);Discount to (yyyy-mm-dd);Reference #;Supplier reference #;Supplier;Brand;EAN13;UPC;MPN;Ecotax;Weight;Quantity;Description;Short description;Tags (x,y,z...);Meta title;Meta description;URL rewritten;Image URLs (x,y,z...);Image alt texts (x,y,z...);Feature (Name:Value:Position:Customized);Available for order;Available date;Show price;Visibility;Additional shipping cost;Unity;Unit price;Summary;Shop (for multi-shop only) ;1;Куртка зимняя мужская;Верхняя одежда,Мужская одежда;2999.00;1;0;0;0;0;;;ART-001;;Бренд;КурткаБренд;4607167430120;;;0;1.5;50;"Полное описание куртки...";"Куртка зимняя";"куртка, зима, мужская";"Купить куртку зимнюю мужскую";"Куртка зимняя мужская — купить";"kurtka-zimnyaya-muzhskaya";"https://cdn.example.com/img1.jpg,https://cdn.example.com/img2.jpg";"Куртка вид 1,Куртка вид 2";"Цвет:Чёрный:1:0;Размер:L:2:0";1;;;1;everywhere;0;;; Конфігурація для масового імпорту
За замовчуванням PHP-процес імпорту впирається в memory_limit та max_execution_time. Для файлів від 10 000 рядків рекомендуємо збільшити ліміти через override контролера або окремий PHP-FPM пул:
// override/controllers/admin/AdminImportController.php class AdminImportControllerCore extends AdminImportController { public function __construct() { parent::__construct(); @ini_set('memory_limit', '512M'); @ini_set('max_execution_time', '3600'); } const MAX_LINE_SIZE = 4096; } Рекомендуємо збільшити ліміти через виділений PHP-FPM пул: memory_limit до 1G, max_execution_time до 7200.
Рекомендовані ліміти PHP для різних обсягів каталогу
| Обсяг каталогу | memory_limit | max_execution_time |
|---|---|---|
| до 5 000 рядків | 256M | 300 |
| 5 000 – 50 000 | 512M | 600 |
| 50 000+ | 1G | 1800 |
Як виконати програмний імпорт через ObjectModel та WebService API?
Для інтеграції з ERP/1С рекомендується обходити веб-імпортер і працювати безпосередньо через API PrestaShop. PrestaShop WebService надає REST API для експорту:
$client = new PrestaShopWebservice('https://example.com', 'YOUR_API_KEY', false); $params = [ 'resource' => 'products', 'display' => '[id,reference,name,price,quantity]', 'sort' => '[id_ASC]', 'limit' => '100,100', ]; $xml = $client->get($params); $products = $xml->products->product; Імпорт товару з атрибутами через ObjectModel:
class ProductImporter { private int $defaultLangId; private int $shopId; public function importProduct(array $data): int { $product = new Product(); $product->name[$this->defaultLangId] = $data['name']; $product->description[$this->defaultLangId] = $data['description']; $product->reference = $data['sku']; $product->price = (float) $data['price']; $product->weight = (float) ($data['weight'] ?? 0); $product->active = 1; $product->id_category_default = $data['category_id']; if (!$product->add()) { throw new \RuntimeException('Failed to add product: ' . $data['sku']); } $product->addToCategories($data['category_ids']); StockAvailable::setQuantity($product->id, 0, (int) $data['qty']); Search::indexation(false, $product->id); return (int) $product->id; } } Коли варто обрати кастомний модуль?
| Критерій | Вбудований імпортер | Кастомний модуль |
|---|---|---|
| Обсяг даних | до 5 000 рядків за раз | будь-який, з розбивкою на батчі |
| Атрибути (варіації) | через CSV (обмежено) | повна підтримка через ObjectModel |
| Швидкість обробки | середня (залежить від конфігурації) | висока (оптимізовані запити) |
| Інтеграція із зовнішніми системами | тільки через файли | через API, вебхуки, чергу |
| Автоматизація (cron) | немає вбудованої | повна підтримка |
Кастомний модуль краще підходить для каталогів з частою синхронізацією та складною логікою оновлення. Замовте налаштування імпорту PrestaShop у нашій команді.
Як налаштувати імпорт товарів PrestaShop за 4 кроки?
- Підготовка даних — приведіть CSV до потрібного формату, перевірте кодування UTF-8 і роздільник.
- Конфігурація PHP — збільште memory_limit та max_execution_time відповідно до обсягу каталогу.
- Тестовий імпорт — завантажте 100–200 записів на копії бази, перевірте маппінг полів та атрибутів.
- Автоматизація — налаштуйте cron для регулярного запуску синхронізації, логуйте помилки через PrestaShopLogger.
Налаштування модуля імпорту для cron
Для регулярного оновлення каталогу із зовнішнього джерела:
// modules/erpimport/cron.php define('_PS_ADMIN_DIR_', getcwd()); include(dirname(__FILE__) . '/../../config/config.inc.php'); $importer = new ErpProductImporter(); $products = $importer->fetchFromErp(strtotime('-1 hour')); foreach (array_chunk($products, 100) as $batch) { foreach ($batch as $productData) { try { $importer->upsert($productData); } catch (Exception $e) { PrestaShopLogger::addLog('ERP import error: ' . $e->getMessage(), 3, null, 'Product', $productData['id'] ?? 0); } } usleep(100000); } Cron запис: */30 * * * * www-data php /var/www/prestashop/modules/erpimport/cron.php >> /var/log/prestashop/erp-import.log 2>&1
Що входить у роботу
- Документація — опис маппінгу полів, інструкція із запуску імпорту.
- Налаштування доступу — створення API-ключа для WebService, права на cron.
- Навчання — консультація по завантаженню тестового файлу, розбір типових помилок.
- Технічна підтримка — гарантуємо виправлення помилок протягом 5 робочих днів після здачі.
Орієнтовні терміни
- Налаштування вбудованого імпортера + тестовий імпорт: 4–8 годин
- Розробка кастомного імпортера з ERP-інтеграцією: 3–7 днів
- Налаштування регулярної синхронізації з моніторингом помилок: 2–3 дні
- Міграція каталогу 10 000+ SKU із зображеннями: 3–7 днів
Вартість розраховується індивідуально після оцінки обсягу даних та складності інтеграції. Залиште заявку — наші інженери проаналізують ваш каталог і запропонують оптимальне рішення. Отримайте консультацію з імпорту товарів PrestaShop вже сьогодні.
Чек-лист для успішного імпорту
- Перевірити ліміти PHP перед запуском.
- Розбити файл на батчі по 100-200 записів.
- Протестувати на копії бази.
- Налаштувати логування помилок.
- Запланувати регулярний запуск через cron.
Згідно з документацією PrestaShop, для високонавантажених каталогів рекомендується використовувати WebService API замість CSV-імпорту.







