При перенесенні каталогу з 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-імпорту.







