пятница, 21 июня 2013 г.

Битрикс Выгрузка заказов Проблема и решение (Управление торговлей для Украины)

Среда

Битрикс 12
1С: УТ Версия конфигурации 1С: 2.3.18.1 Управление торговлей для Украины


Ситуация

Обновили модуль интеграции до версии "1С 8.2 УТ 10.3.16.1 ред 2.9.16"

Пытаемся провести выгрузку заказов. Система считает, что все заказы нужно изменять.
Делает большой файл (порядка 18 Мб и пытается заслать его на сервер).
Выгрузка заканчивается с ошибкой 500.


Как диагностировал

1С-ка диагностирует ошибку так

Выгружено заказов: 1 726 Ошибка при вызове метода контекста (ОтправитьДляОбработки): Ошибка при выполнении файловой операции 'bitrix/admin/1c_exchange.php?type=sale&mode=file&filename=v8_253F_66.zip': Ошибка работы с Интернет: внутренняя ошибка сервера (500) Internal Server Error.
Произошла ошибка: . По причине: Произошла ошибка на стороне сервера. Не получен статус завершения операции

Залез в логи сервера
(на моем хостинге 1gb - они доступны по ftp в папке logs фалй с именем error...<дата>.log)
Ошибка из логов выглядит так
[warn] [client XX.XX.XX.XXX] mod_fcgid: read data timeout in 150 seconds
[Tue Jun 04 16:05:42 2013] [error] [client XX.XX.XX.XXX] Premature end of script headers: 1c_exchange.php

Что пробовал

(в моем случае не помогло, но может помочь в Вашем)

Настройки среды PHP

Если позволяет хостинг, попробуйте увеличить лимиты среды php
max_execution_time = 600
max_input_time = 600
memory_limit = 256M
post_max_size = 256M

Это настройки из файла php.ini


Настройки сервера 

В ходе общения со службой поддержки и гугления вышли на еще одни настройки.
Параметры такие:
FcgidIOTimeout/IPCCommTimeout
Тут я просто попросил службу поддержки сервера увеличить эти параметры.
Ребята сделали, ошибка в логах изменилась, но выгрузка заказаов все равно не произошла

в логах-такое
[Thu Jun 06 18:38:57 2013] [warn] [client XX.XX.XX.XXX] (104)Connection reset by peer: mod_fcgid: error reading data from FastCGI server
[Thu Jun 06 18:38:57 2013] [error] [client XX.XX.XX.XXX]  Premature end of script headers: 1c_exchange.php
Потом я дал службе поддержки удаленный доступ к 1с, чтобы они сами смогли проинициировать выгрузку. Ребята из поддержки позанимались еще несколько дней и выдали неутешительный вердикт.

В конце концов служба поддержки хостинга дала такой ответ
Увы, в Вашем случае достигается лимит в 300 секунд процессорного времени на один процесс (т.е. процесс подгрузки на протяжении 5 минут создаёт процессорную нагрузку в 100%). Этот лимит у нас, к сожалению, обойти нельзя.
Вам нужно либо как-то "дробить" процесс импорта на части, чтобы он "помещался" в этот лимит, либо же переносить сайт на VDS -- там таких лимитов нет.
На VDS переходить не хотелось.

Я переслал ответ поддержки хостинга в Битрикс - получил ответ, который и помог с выгрузкой заказов


Решение, которое помогло

Тут цитирую ответ службы поддержки Битрикса, после того как все возможные варианты решения со службой поддержки хостинга мы уже испробовали

В модуле обмена с сайтом существует режим принудительной полной выгрузки. Этот режим включается автоматически при любом изменении настройки обмена. В режиме принудительной полной выгрузки изменения заказов 1С игнорируются, происходит полная выгрузка заказов. Режим принудительной полной выгрузки отключается автоматически после первого удачного сеанса обмена. 
Режим принудительной полной выгрузки, при необходимости, может быть отключен вручную. Для этого необходимо через меню «Операции» открыть регистр сведений «Настройки обмена с сайтом с принудительной полной выгрузкой» и удалить в нем записи, относящиеся к используемой настройке обмена.

Действия на будущее

Попросил у Битрикса-1С - разбивать файлы заказов на части, как это делается с товарами

Благодарности

Спасибо большое специалистам службы поддержки хостинга http://1gb.ua за участие в решении вопроса

См.также

Если это решение оказалось не вашим случаем, есть еще одно описание проблемной ситуации при выгрузке и её решение
Решение еще одной проблемы с выгрузкой заказов с ошибкой "Не получен статус заврешения операции"

среда, 5 июня 2013 г.

Нестандартный шаг в JQuery слайдере

Должна помочь статья

http://www.linkexchanger.su/forum/viewtopic.php?f=3&t=1483

и со стековерфлоу статья
http://stackoverflow.com/questions/967372/jquery-slider-how-to-make-step-size-change