Сообщение отдельно
02.04.2009 02:47
Цитата:
OlegON А поподробнее? Каждый грузит в определенное время?
Если особо не вдаваться в подробности, то общая схема выглядит так:

Для выгрузки на ТСД.
Прежде всего, терминальный клиент на сервере запускает ярлычком скрипт, который проверяет наличие флагов выгрузки, созданных другими пользователями. Если флаг обнаружен, то пишется в каком именно магазине выгружают/загружают ТСД. Если чужих флагов нет, создаётся свой. Тем самым, пользователи других магазинов уже не могут зделать выгрузку. Далее, требуется выгрузить данные их СМ в файл. Если пользователь тормозит в течении определённого интервала времени (например, отвлекли), то его флаг автоматически удаляется и, впоследствии, механизм выгрузки требуется запускать снова. После того как выгрузка зделана, скрипт отлавливает этот момент и отправляет уже архивированные данные кусочками в магазин. В завершении происходит удаление соответствующего магазину флага выгрузки.

Для приёма данных с ТСД.
Обратный процесс несколько отличается. Данные из магазина прилетают на сервер (как именно, это отдельная история). Пользователь запускает там ярлычком скрипт, который проверят наличие файла Scanout.dat в папке обмена. Если файл есть, то пользователь курит/пьёт чай. Если файла нет, то происходит извлечение файла из архива и помещение его в папку обмена. Далее, необходимо принять данные в течении определённого интервала времени. Если пользователь тормозит, то файл удаляется, дав тем самым возможность пользователям других магазинов выгрузить ТСД.

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