я не против, но как это сделать в ODBC (mysql) с помощью clarion ? Буду рад подсказкеRaFaeL писал(а): 16 Июль 2017, 10:30 Так а может перед каждым GET проверять, не пропало ли соединение?

Модератор: Дед Пахом
я не против, но как это сделать в ODBC (mysql) с помощью clarion ? Буду рад подсказкеRaFaeL писал(а): 16 Июль 2017, 10:30 Так а может перед каждым GET проверять, не пропало ли соединение?
Да у меня так и сделано в отдельном треде и зависает все приложениеAdmin писал(а): 16 Июль 2017, 12:12 Кстати а отдельным тредом нельзя обойтись? Все равно будет виснуть?
Вполне серьезно. Это зависит от архитектуры и функционала основного приложения.gopstop2007 писал(а): 16 Июль 2017, 10:12Серьезно, третье? А какие проблемы могут возникнуть, если основное за этим проследит ?finsoftrz писал(а): 16 Июль 2017, 9:56 А еще дополнительно третье приложение, которое следит, не зависло/отвалилось ли второе, чтобы автоматически его снять и перезапустить...
Какая-такая параллельная запись? Я думал, что этот файл только для синхронизации. Тогда мне не понятен бизнес процесс. Вот у нас, бывает, связь с филиалами рвётся. Мы большие файлы качаем по ftp c докачкой и т.д. Мне представляется так. На одном компе создали файл с данными, послали на сервер. Программа проверила идентичность файла, кинула на сервер пустой файл "OK". На сервере резидентная программа увидела этот пустой файл и начала синхронизацию. Все велосипеды уже изобретены вродеgopstop2007 писал(а): 16 Июль 2017, 7:07 Нет не удаляет, как как в этот момент может идти параллельная запись в него данных из основной программы
С одним файлом prod.tps может работать несколько пользователей, процесс изменения остатков и записи на сервер быстрее асинхронныйkreator писал(а): 16 Июль 2017, 16:57 Какая-такая параллельная запись? Я думал, что этот файл только для синхронизации. Тогда мне не понятен бизнес процесс.
Спабо за интересную информацию. Интересно как вы контролируйте зависло ли приложение, в процессе работы (отправки, получения данных) или в режиме "ожидания"?finsoftrz писал(а): 16 Июль 2017, 13:29 Вполне серьезно. Это зависит от архитектуры и функционала основного приложения.
... Основное вызывает его в виде процесса, передавая параметры командной строки. Если в течении заданного периода времени работа второго приложения не завершилась, то либо прерываем процесс (снимая второе запущенное приложение), либо активируем для пользователя кнопку Прервать. Тут еще есть один важный нюанс. Мы не знаем, на каком этапе произошел сбой соединения. Он может произойти, когда задание на сервере было получено и выполнено, но ответ об успехе от сервера получить не смогли.
В топике было, что файл prod.tps локальныйgopstop2007 писал(а): 17 Июль 2017, 9:04 С одним файлом prod.tps может работать несколько пользователей, процесс изменения остатков и записи на сервер быстрее асинхронный .
Чересчур замысловато. Чем больше звеньев, тем больше проблем. gopstop2007, если связь совсем хреновая, может вэб-морда поможет? Кстати, у нас много народу считают эту вэб-морду панацеей от медленных каналов связи.finsoftrz писал(а): 17 Июль 2017, 17:51 Если запуск второго приложения, которое должно завершиться после выполнения задания, то через процесс. По таймеру проверяем факт завершения процесса.
Если контролируется приложение, которое должно работать постоянно, то запускаем тоже через процесс и пингуем по ip-протоколу. Ответ пришел, значит работает. Не пришел, то зависло или отвалилось. Тогда убиваем процесс и перезапускаем.
Код: Выделить всё
if fsProc.StartProcess('fsprmag_con.exe req=11 user="' & clip(AcUSE:Shtamp) & '" pswd=' & choose(AcUSE:Parol='','','"' & clip(AcUSE:Parol) & '"') & ' err="' & clip(FsAccess:ActiveUserDir) & '"','Запись документов на сервер...',1600,0)=0
....
end
Магазин (локально) в котором несколько пользователей(продавец,кладовщик и т.п) и связь с офисом (сервером).
Согласен, только начал осваиватьКстати, у нас много народу считают эту вэб-морду панацеей от медленных каналов связи.
Огромное спасибо за рабочий пример. Понятно, что есть много примеров по данному вопросу, но когда эти примеры начинаешь использовать(пробовать), вылазит много мелочей, которые сводят работу на нет.finsoftrz писал(а): 18 Июль 2017, 8:14 Вот классик для запуска программы через процесс, может, кому пригодится. Пример вызова:
Тогда бы я попробовал сделать так. В локальном магазине периодически запускается некая прога, которая выгружает на удалённый сервер изменения в локальном prod.tps. На сервере при появлении этой выгрузки стартует синхронизация. Повторюсь - чем проще, тем лучше. Проблемы репликации всем известны. Даже в больших SQL с репликацией не всё однозначно.gopstop2007 писал(а): 18 Июль 2017, 9:43 Магазин (локально) в котором несколько пользователей(продавец,кладовщик и т.п) и связь с офисом (сервером).
Я проверяю сейчас такой механизм работы
У меня сейчас похоже сетка из 14 продуктовых супермаркетов работает. В магазинах 1-2 рабочих места на бэке (Продмаг) и локальная сетка (кассовые узлы, весы). Основная база на сервере через интернет (КупецЪ). Справочники подгружаются с сервера по мере необходимости. Далее работают локально в каждом магазине. По мере готовности документов отправляют их на сервер (утверждают). Либо по одному, либо сразу все неотправленные. Раз в неделю автоматическая принудительная отправка. Если документ надо изменить после отправки, то отправку предварительно отменяют. На сервере документ при этом выключается. При повторной отправке на сервере документ создается заново. Каждую ночь выполняется автоматическая сверка документов и остатков товаров с сервером и по электронной почте отправляется отчет из каждого магазина.gopstop2007 писал(а): 18 Июль 2017, 9:43Магазин (локально) в котором несколько пользователей(продавец,кладовщик и т.п) и связь с офисом (сервером).