Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> немножко php          
Batchir Подменю пользователя
сообщение 01.04.11, 20:04
Сообщение #1

Живет на форуме
Иконка группы
Группа: Команда
Сообщений: 3568
Из: Киев
Спасибо сказали: 1427 раз
Рейтинг: 0

В общем пишу сейчас загрузку в инет-магазин по стандарту КомерцМЛ из 1С.
Выгрузку беру стандартную (от битрикса), загрузку пишу свою, точнее дорабатываю то что удалось найти.
Сейчас с демо базой нормально работает, загружается номенклатура, цены, свойства, картинки, но когда перешел на тестирование выгрузки загрузки данных из основной БД, то файлик оказался большим и веб сервер отказался его грузить.
Сделал разбивку архива на части - эти части благополучно загрузились на сервер, но опять заткнулся - не получается собрать воедино части архива.
Когда отключаю выгрузку картинок, то тоже номально загружается (получается один полноценный архив). Вобщем дело в картинках - их много и занимают много места.
Выгружать отдельно картинки не совсем вариант, т.к. хочется оставить типовый механизм выгрузки данных на сайт.

Вобщем вот функция которая у меня делает разархивацию, если кто подскажет как можно собрать части архива на php буду благодарен
$file - файл который нужно разархивировать
$folder - каталог где лежит файл
function unzip($file,$folder=''){
    $zip = zip_open($folder.$file);
    $files = 0;
    $folders = 0;

    if ($zip) {
        while ($zip_entry = zip_read($zip)) {


            $name = $folder . zip_entry_name($zip_entry);

            $path_parts = pathinfo($name);
            # Создем отсутствующие директории
            if(!is_dir($path_parts['dirname']))
            {
                mkdir($path_parts['dirname'], 0755, true);
            }


            if (zip_entry_open($zip, $zip_entry, "r")) {
                $buf = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry));

                $file = fopen($name, "wb");
                if ($file) {
                    fwrite($file, $buf);
                    fclose($file);
                    $files++;
                } else {

                }
                zip_entry_close($zip_entry);
            }
        }
        zip_close($zip);
    } else {

    }
}


Когда идет загрузка архива по частям , то ругается на
while ($zip_entry = zip_read($zip)) {
Ошибка следующая
PHP Warning: zip_read() expects parameter 1 to be resource, integer given in /home/...../connect.php on line ....

Acid Подменю пользователя
сообщение 04.04.11, 10:11
Сообщение #2

Про1С-ник
Иконка группы
За заслуги на форуме в 2010 году
Группа: Местный
Сообщений: 2104
Из: Занзибар
Спасибо сказали: 378 раз
Рейтинг: 262

а если попроьбовать готовый архив разбить средствами рнр(получиться новый разбитый на части)?
или таким макаром: сначала архив нужно залить на сервер во временную папку и пссле этого уже с ним работать. тогда возможно ограничения на размер файла снимутся (это ж уже локальный файл получается).
вот ссылка (там примеры и комментарии можно найти полезные): [необходимо зарегистрироваться для просмотра ссылки]


Signature

Документируйте Код! мать вашу...


Batchir Подменю пользователя
сообщение 04.04.11, 13:29
Сообщение #3

Живет на форуме
Иконка группы
Группа: Команда
Сообщений: 3568
Из: Киев
Спасибо сказали: 1427 раз
Рейтинг: 0

Весь финт заключался в том что бы оставить типовость выгрузки из 1С, но решил плюнуть на это и переписал кусок разбивки файла в 1С, т.е.
не разбиваю весь архив на части, а создаю N-е число архивов удовлетворяющих по размеру веб-сервер:
ХМЛ в одном архиве, картинки в другом и уже эти файлы залетают.
Столкнулся с другой проблемой, но это уже особенности движка.
PHP Fatal error: Maximum execution time of 30 seconds exceeded
Дело в том что эти картинки потом обрабатываются отдельно и срабатывает ограничение выполнения скрипта в 30 сек.
Следовательно вижу выход только в том что бы для загрузки каждой картинки посылать отдельный запроса веб серверу.

Acid Подменю пользователя
сообщение 04.04.11, 14:41
Сообщение #4

Про1С-ник
Иконка группы
За заслуги на форуме в 2010 году
Группа: Местный
Сообщений: 2104
Из: Занзибар
Спасибо сказали: 378 раз
Рейтинг: 262

я выгрузку/загрузку делаю обычным скл-запросом (как из рнр-админ примерно) UPDATE... CREATE IF NOT EXIST...
так на много проще. в таблице ведь находится ссылка на картинку, или на имя файла с картинкой (ряд вариантов есть). запустил запрос, потом картинки в нужное место залил, и все.
а если картинки хранятся непосредственно в таблице - это не есть гуд.

Batchir Подменю пользователя
сообщение 04.04.11, 15:14
Сообщение #5

Живет на форуме
Иконка группы
Группа: Команда
Сообщений: 3568
Из: Киев
Спасибо сказали: 1427 раз
Рейтинг: 0

Цитата(Acid @ 04.04.11, 15:41) *
я выгрузку/загрузку делаю обычным скл-запросом (как из рнр-админ примерно) UPDATE... CREATE IF NOT EXIST...
так на много проще. в таблице ведь находится ссылка на картинку, или на имя файла с картинкой (ряд вариантов есть). запустил запрос, потом картинки в нужное место залил, и все.
а если картинки хранятся непосредственно в таблице - это не есть гуд.

Да не в этом проблема вся инфа без картинок с сылками залетает на ура. Просто движок умеет конвертить картинки в разные размеры что бы выводить их красиво в разных местах. Если кидать неотформатированную фотку, то некрасиво получается.
так вот тут и проблема. Я тестирую выгрузку 5000 наименований, пока 500 картинок.
и движок одним махом пытается эти 500 картинок преобразовать в 3000 (получается 6 картинок разного размера из 1).
Вот тут и происходит затык. Уж сильно долгая это операция. Если бы 1С умела так конвертить картинки, то конечно я бы сначала всё подготовил и просто залил.
А так приходится мудрить, т.е. для каждой картинки запускать преобразование отдельным запросом.

З.Ы. К тому же разве можно вот так вот без проблем напрямую подключиться к майскл-у и выполнить запрос? Думаю не каждый хостинг это разрешает из-за возможных проблем с безопастностью.

Acid Подменю пользователя
сообщение 04.04.11, 15:21
Сообщение #6

Про1С-ник
Иконка группы
За заслуги на форуме в 2010 году
Группа: Местный
Сообщений: 2104
Из: Занзибар
Спасибо сказали: 378 раз
Рейтинг: 262

Цитата(Batchir @ 04.04.11, 17:14) *
З.Ы. К тому же разве можно вот так вот без проблем напрямую подключиться в майскл-у и выполнить запрос? Думаю не каждый хостинг это разрешает из-за возможных проблем с безопастностью.

Практически на каждом нормальном хостере рнр-админ есть. Можно хоть вручную заносить данные по таблицам. Вот на моем хостинге ограничение при загрузке на размер файла (в БД) 20М. может на других хостерах и того меньше разрешают.
А преобразование картинок это да. Тогда уж кусками выгружать.

Flexy Подменю пользователя
сообщение 04.04.11, 15:21
Сообщение #7

Танцор с Бубном
Иконка группы
Группа: Местный
Сообщений: 1121
Из: Днепра
Спасибо сказали: 230 раз
Рейтинг: 0

Цитата(Batchir @ 04.04.11, 15:14) *
З.Ы. К тому же разве можно вот так вот без проблем напрямую подключиться к майскл-у и выполнить запрос? Думаю не каждый хостинг это разрешает из-за возможных проблем с безопастностью.

Можно попробовать залить уже готовый скрипт с нужным запросом на хостинг.А потом уже через админку MySql-я его выполнить.

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 25.05.24, 5:47
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!