webAsyst ShopScript версии 302 (302 это последняя версия на текущий момент - июнь 2011г.) и ниже, не поддержимает приём данных в с использованием формата CommerceML в запакованном виде zip.
Суть проблемы: по умолчанию всегда включен режим загрузки файлов без возможности обработки данных в формате zip.
Последствие: соответственно большие файлы могут быть не загружены на сайт, т.к. сработает таймаут на время выделенное сервером. При объёме товаров равным 10.000 хранящихся в учётной системе, размер файла может составлять 30мб, поэтому его загрузка может быть проблематичной, если не использовать сжатие в формате zip. Использование формата zip позволяет сократить передачу файла в ~30раз, т.е. будет передан на сайт файл объёмом 1мб (оригинал 30мб).
Доработка webAsyst ShopScript для приёма данных в формате zip.
Изменения необходимо провести в файле:
Код: Выделить всё
/published/SC/html/scripts/modules/products/exportto1c/class.exportto1c.php Код: Выделить всё
$USE_ZIP = false && function_exists("zip_open");Код: Выделить всё
$USE_ZIP = function_exists("zip_open");Код: Выделить всё
if($result === mb_strlen($data, 'latin1'))
{
echo "success\n";
}Код: Выделить всё
if($result === mb_strlen($data, 'latin1'))
{
echo "success\n";
if ($USE_ZIP) {
$zip = zip_open($filename);
if (is_resource($zip)) {
while ($zip_entry = zip_read($zip)) {
if (zip_entry_open($zip, $zip_entry, "r")) {
$buf = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry));
$fp = fopen($DIR_NAME."/".zip_entry_name($zip_entry), "w");
fwrite($fp, $buf);
zip_entry_close($zip_entry);
}
}
zip_close($zip);
unlink($filename);
}
}
}Код: Выделить всё
if($fp = fopen($filename, "ab"))Код: Выделить всё
if($fp = fopen($filename, "wb"))Код: Выделить всё
php_value memory_limit 256M