[ОТВЕТИТЬ]
26.06.2008 10:44
akonev
 
Цитата:
Mihon Ага. Умеем. Но это не есть правильно. Все равно что делать стоп/старт базы. Ну не для этого случая. Вот.
Не согласен. Совсем не то же самое. Абсолютно безболезненная операция, никак не влияющая на работу остальных кусков СМ и операторов.
И в то же время - самый простой способ инициировать немедленную выгрузку.
Так что зря упираешься, честное слово.

А в базе никаких флажков нет.
Получается, что или перестартовывать КМ или рисовать прикладуху, чтобы она кнопку жала или делать операм mmc консольку, где они смогут эту кнопку руками нажать.

Или как Vovantus делал: оператор жмет ярлычек, по нему отрабатывается скриптик, который выкладывает файл-флаг.
Некая софтина видит этот флаг и все-таки перестартовывает сервис.
26.06.2008 10:54
Mihon
 
Цитата:
Andrew_Konev Не согласен. Совсем не то же самое. Абсолютно безболезненная операция, никак не влияющая на работу остальных кусков СМ и операторов.
И в то же время - самый простой способ инициировать немедленную выгрузку.
Так что зря упираешься, честное слово.

А в базе никаких флажков нет.
Получается, что или перестартовывать КМ или рисовать прикладуху, чтобы она кнопку жала или делать операм mmc консольку, где они смогут эту кнопку руками нажать.

Или как Vovantus делал: оператор жмет ярлычек, по нему отрабатывается скриптик, который выкладывает файл-флаг.
Некая софтина видит этот флаг и все-таки перестартовывает сервис.
Перестартовывание мне не нравится, потому что службы иногда виснит - service_start_pendig или service_stop_pendig.
Перед перестартовыванием надо расписание менять, или КМ и так выгрузку делать будет? немножко непонятно...
Вдруг, поставив расписание так, чтобы выгрузилось через минуту, пререстартовав сервис, он долго запускаться будет и к моменту как он прочитает расписание время уже пройдет. Тогда обомаемся?
26.06.2008 11:11
Vovantus
 
Цитата:
Mihon Перестартовывание мне не нравится, потому что службы иногда виснит - service_start_pendig или service_stop_pendig.
Есть такая фигня, подвисает иногда, редко правда Но и из этой ситуации можно выкрутиться. Тут на форуме уже кто-то задавал вопрос про то, как посмотреть статус запущенной службы. Ну так вот, останавливаем службу, а после того как команды выполнена (возможно сервис КМ не остановился), зацикливаем проверку статуса службы и в нём посылаем нужную команду КС до усрачки, пока он не отработает как нужно :) Можно пойти дальше и после определённого количества циклов тупо грохать подвисшую службу КС.
26.06.2008 11:24
akonev
 
Цитата:
Mihon Вдруг, поставив расписание так, чтобы выгрузилось через минуту, пререстартовав сервис, он долго запускаться будет и к моменту как он прочитает расписание время уже пройдет. Тогда обомаемся?
Поставь выгрузку по интервалу (неважно какому), время начала выгрузок и конца выгрузок. Этого достаточно. Расписание править не придется. При запуске КМ в рамках начало-конец пойдет выгрузка.
Когда будет нужна принудительная полная - тогда поправишь флажки на кассах, как Kadr писал.
26.06.2008 13:53
Mihon
 
Цитата:
Andrew_Konev Поставь выгрузку по интервалу (неважно какому), время начала выгрузок и конца выгрузок. Этого достаточно. Расписание править не придется. При запуске КМ в рамках начало-конец пойдет выгрузка.
Когда будет нужна принудительная полная - тогда поправишь флажки на кассах, как Kadr писал.
т.е. когда КМ стартует он ВСЕГДА будет делать выгрузку (сразу же), я правильно понимаю?
27.06.2008 05:35
Vovantus
 
Цитата:
Mihon т.е. когда КМ стартует он ВСЕГДА будет делать выгрузку (сразу же), я правильно понимаю?
На нашей версии СМ, КС ещё болеет болезнью, при которой выгрузка происходит следующим образом. Условно, расписание выгрузки с 12.00-13.00 с интервалом в 5 минут. Первая выгрузка происходит в 12.00. Условно, данные выгружаются за 1 минуту. Далее, если следовать расписанию, следующая выгрузка должна быть в 12.05. Но по факту она будет в 12.06, т.е. со смещением в одну минуту. Эту болезнь кажется вылечили ещё в версии 1.024.5 (возможно раньше). Т.е выгрузка идёт строго по расписанию, не смещаясь по времени.
Так или иначе, но данные из КС будут выгружаться исходя из расписания выгрузки. Т.е., если привязаться к расписанию выгрузки, которое я указал выше, то получаем следующую схему. Условно, в 12.00 началась выгрузка. Данные выгрузились за 1 минуту. После этого кассовый сервер остановили. Если его запустить в 12.03, то выгрузки не будет. А если его запустить, например, в 12.07, то сразу начнётся выгрузка. На этой системе у меня посроена выгрузка по требованию. Расписание ПОЛНОЙ выгрузки 8.00-20.00 с интервалом 3 мин. Появился флаг запроса выгрузки - КС останавливается, меняется значение в реестре, которое переводит кассовый сервер только на ПЕРЕДАЧУ данных, далее КС запускается и начинается выгрузка. Данные выгрузились, по завершению кассовый сервер останавливается, в реестре меняется значение, которое переводит КС только на ПРИЁМ данных, далее КС запускается и начинается приём з-отчётов (если они есть) и оперативных чеков. Эта несложная система позволяет делать выгрузку только тогда, когда это требуется.

плюсы:
- с сервера снята лишняя нагрузка, которая возникает при каждой выгрузке данных по расписанию.
- экономия трафика за счёт пропуска "пустых" выгрузок.
- простои касс в магазинах при принятии данных от КС.

минусы:
- оператор может забыть выгрузить данные на кассу.
- следовательно нужно приложить немало усилий, чтобы у операторов выработался условный рефлекс: зделал изменения - нажал выгрузить!
- сложность при написании скриптов, сопровождающих такую систему выгрузки.
27.06.2008 09:23
kadr
 
Цитата:
Vovantus ... КС останавливается, меняется значение в реестре, которое переводит кассовый сервер только на ПЕРЕДАЧУ данных, далее КС запускается и начинается выгрузка. Данные выгрузились, по завершению кассовый сервер останавливается, ....
кто и как определят что данные выгрузились и нужно перезапустить КМ на приём?
27.06.2008 09:55
Vovantus
 
Цитата:
kadr кто и как определят что данные выгрузились и нужно перезапустить КМ на приём?
У меня выгрузка делается прямиком в локальные папки на сервере. Сервис nnCron отслеживает появление файла cash00x.db, предназначенного для последней кассы в списке выгрузки. При его создании запускается скрипт, который перезагружает КМ. Есть ещё вариант. Через nnCron отслеживать насколько активен КМ по отношению к процессорному времени. Если загрузка CPU сервисом КМ равна нулю, значит он отработал и его можно перезапускать.
27.06.2008 11:00
kadr
 
Цитата:
Vovantus У меня выгрузка делается прямиком в локальные папки на сервере. Сервис nnCron отслеживает появление файла cash00x.db, предназначенного для последней кассы в списке выгрузки. При его создании запускается скрипт, который перезагружает КМ. ...
Так и думал, только иногда кассовый стреляется если по каким-то причинам файлы в каталоге касс заблокированы и не всегда доходит до конца списка касс.
27.06.2008 14:02
Mihon
 
Схема интересная, но это нужно много писать и на каждый магазин уйдет ой как много времени.
И где-нибудь обязательно появится проблемка, сомневаюсь что вся эта штука работает стабильней чем сам КМ.

Вернусь к своему вопросу, уточню его еще.
распис. выгрузки с 08.00 до 23.00 инт 20 мин.
КМ запустился в 05.00 после бэкапа и работает, все выгружает.
1 вариант: В 08.30 его останавливаем и включаем в 08.35. Начнется выгрузка?
2 вариант: В 08.15 его останавливаем и включаем в 08.30. Начнется выгрузка?
28.06.2008 13:01
kadr
 
А проверить самостоятельно? Ответ на вопрос может быть получен только путём экспериментов, ну или разработчиков мучать.
01.07.2008 11:12
Vovantus
 
Цитата:
Mihon Вернусь к своему вопросу, уточню его еще.
распис. выгрузки с 08.00 до 23.00 инт 20 мин.
КМ запустился в 05.00 после бэкапа и работает, все выгружает.
1 вариант: В 08.30 его останавливаем и включаем в 08.35. Начнется выгрузка?
2 вариант: В 08.15 его останавливаем и включаем в 08.30. Начнется выгрузка?
Предположим, у тебя версия СМ свежая и КМ не страдает болезнью смещать выгрузки по времени. Вот смотри что получается исходя из твоей схемы:

1. Первая выгрузка происходит в 8.00. Следующая в 8.20. В 8.30 ты вырубил КМ. Врубил его в 8.30, но выгружать он не будет, т.к. следующая выгрузка у него "запланирована" на 8.40. Вот тогда он и выгрузится.

2. Первая выгрузка происходит в 8.00. Потом, в 8.15, КМ останавливается и, следовательно, пропускает выгрузку, которая должна быть в 8.20. После того как КМ в 8.30 запускается, сразу начинается выгрузка.

Эти мысли на практике проверить не могу, т.к. у меня СМ той версии, в которой КМ страдает болезнью смещать выгрузки по времени. Но эту болезнь вылечили в версии 1.024.5. Поэтому, могу предположить, что кассовый модуль будет вести себя так, как я написал выше.
01.07.2008 12:43
Mihon
 
А как ты думаешь, почему я написал именно это время и эти диапазоны? Мотому что сам предполагаю то же самое.
Хорошо, предположим, наше предположение верно.
Тогда схемка:
8.00 КМ запущен.
8.20 Выгрузка
8.30 КМ остановлен.
8.31 расписание поменялось на с 8.00 до 23.40 инт. 1 минута.
8.31 КМ запущен.
? предположим выгрузка начнется ?
8.31 Цикл-проверка на то что КМ отработал и выгрузил что надо
8.33 КМ остановлен
8.33 Меняем расписание обратно
8.33 КМ запущен

Вопрос: как сделать цикл-проверку?
Варианты:
1. По загруженности ЦП (не прокатит)
2. По Файлам, созданным в директории касс (коряво)
3. Может быть, еще как-то?
01.07.2008 13:17
kadr
 
Используй флаг в таблице касс (полная выгрузка), я уже писал, как только СуперМаг выполняет условие "Следующая выгрузка будет полной", он его сбрасывает.

Так же в базе хранится значение из интерфейса "Прошлая выгрузка"
01.07.2008 13:57
Mihon
 
Цитата:
kadr Используй флаг в таблице касс (полная выгрузка), я уже писал, как только СуперМаг выполняет условие "Следующая выгрузка будет полной", он его сбрасывает.

Так же в базе хранится значение из интерфейса "Прошлая выгрузка"
хм... интересное предложение
а если потребуется сделать частичную выгрузку? (полная кассами принимается дольше)

А где уж хранится "Прошлая выгрузка"? Там же, гре флаг "полная"?
01.07.2008 14:23
Vovantus
 
Цитата:
Mihon Вопрос: как сделать цикл-проверку?
Варианты:
1. По загруженности ЦП (не прокатит)
2. По Файлам, созданным в директории касс (коряво)
3. Может быть, еще как-то?
При любом варианте стандартными средствами ОС ты не решишь поставленной задачи. Нужно что-нить стороннее использовать..

1. Почему не прокатит отслеживание загрузки CPU сервисом КМ? Это вариант. Вполне рабочий. Нужно просто сесть и посмотреть во время выгрузки насколько КМ грузит проц и в течении какого времени.

2. Почему тебе не нравится вариант с отслеживанием файлов в директории выгрузки? У тебя есть почтовый сервер? У меня нет, поэтому прекрастно всё работает. Секрет в том, что локальные каталоги выгрузки на сервере недоступны для касс. На кассы данные передаются в сжатом виде, кусочками, посредством отдельных скриптов. Для примера. Магазин, 3 кассы. Выгрузка на них в чистом виде (DB + индексы) весит порядка 95 метров. После всех оптимизаций выгразка уменьшается в 50 раз!!!
01.07.2008 14:37
akonev
 
Цитата:
Mihon хм... интересное предложение
а если потребуется сделать частичную выгрузку? (полная кассами принимается дольше)
как вариант, если захочется отслеживать именно этот флаг: завести в СМ дополнительную виртуальную кассу и в случае частичной - полную взводить только для этой кассы.
если флаг взведен не для всех касс - сначала отрабатывается частичная, потом отдельным проходом полная.
стало быть, если полная готова (флаг сбросился) - значит и частичные уже готовы.

корявость в контроле файлов-флагов вижу только одну: чтобы не пропустить появление файла до того момента, как его съест касса - надо выгружать в один каталог, а кассе отдавать из другого.
на перекладывании из каталога в каталог действительно будет сложность, если касса не забрала предыдущую выгрузку.
02.07.2008 00:38
Vovantus
 
Цитата:
Andrew_Konev корявость в контроле файлов-флагов вижу только одну: чтобы не пропустить появление файла до того момента, как его съест касса - надо выгружать в один каталог, а кассе отдавать из другого.
на перекладывании из каталога в каталог действительно будет сложность, если касса не забрала предыдущую выгрузку.
Забыл сказать, у меня всегда полная выгрузка! Следовательно, никаких проблемм *106
02.07.2008 08:51
Mihon
 
Цитата:
Andrew_Konev как вариант, если захочется отслеживать именно этот флаг: завести в СМ дополнительную виртуальную кассу и в случае частичной - полную взводить только для этой кассы.
если флаг взведен не для всех касс - сначала отрабатывается частичная, потом отдельным проходом полная.
стало быть, если полная готова (флаг сбросился) - значит и частичные уже готовы.

корявость в контроле файлов-флагов вижу только одну: чтобы не пропустить появление файла до того момента, как его съест касса - надо выгружать в один каталог, а кассе отдавать из другого.
на перекладывании из каталога в каталог действительно будет сложность, если касса не забрала предыдущую выгрузку.
Дополнительная касса... должно получиться...
А может, лучше смотреть значение "Прошлая выгрузка"?
kadr, где же оно хранится?
02.07.2008 09:14
Mihon
 
Сейчас ковыряю SVdepots, кто-нибудь знает, что значит Cashloadstart, Cashloadfull и Cashloadtime?
02.07.2008 09:21
Mtirt
 
Из описания таблицы SMDepots:
Цитата:
Cashloadtime - Время окончания последней загрузки касс...
Cashloadfull - время окончания последней ПРИНУДИТЕЛЬНОЙ полной загрузки касс по расписанию. ВНИМАНИЕ: это не время, когда какая-то или все кассы грузились полностью последний раз, но время, когда завершилась последняя ПРИНУДИТЕЛЬНАЯ полная загрузка в соответствии с расписанием принудительных загрузок. Полная загрузка по команде оператора из консоли кассового сервера здесь не фиксируется.
Cashloadstart - Время начала последней загрузки касс. Это время используется:
- для расчета следующего момента загрузки касс по расписанию;
- отбора последних изменений при инкрементальной загрузке касс.
02.07.2008 09:34
Mihon
 
Цитата:
Mtirt Из описания таблицы SMDepots:
Пасиба!

Значит, достаточно поменять (при расписании с инт. 20 мин) Cashloadstart на 20 мин. назад, запомнить Cashloadtime, перезапустить КМ и циклом читать Cashloadtime, сравнивая с запомненным Cashloadtime.
Если разошлись - выгрузка завершена!
Ну что, буду лопатить:)
02.07.2008 09:36
Mtirt
 
Только я бы обратила внимание вот на это:
Цитата:
- отбора последних изменений при инкрементальной загрузке касс.
И была бы осторожна с изменением этого параметра.
02.07.2008 09:47
akonev
 
Цитата:
Mtirt ...И была бы осторожна с изменением этого параметра.
ну назад-то можно спокойно откатывать на небольшой период. только чуть увеличит объем выгрузки.
а если откатит сильно далеко - должно само переключиться на полную по количеству отобранных карточек.
вот вперед его точно менять не стоит.

только по-хорошему - надо сначала остановить кассовик, потом запомнить/поменять параметры, а уже после этого стартовать кассовик снова и мониторить.


Опции темы


Часовой пояс GMT +3, время: 20:46.

 

Форум сделан на основе vBulletin®
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd. Перевод: zCarot и OlegON
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.