Russian Qt Forum
Ноябрь 22, 2024, 20:18 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Локальная программа + удаленный сервер - Современный подход  (Прочитано 9388 раз)
crocus
Гость
« : Февраль 15, 2007, 02:26 »

Собственно вопрос о современных методах обмена данными между удаленным сервером и локальной программой, например -  я использую в своей программе базу данных MySQL, информация перемещается туда-обратно, поскольку сервер виртуальный и прямого доступа к базе нет (туннели использовать неохота. потому что никогда не использовал) -выгружаю данные в файл - сжимаю -закачиваю на сервер - распаковываю - читаю файл (LOAD DATA INFILE не поддерживается)- обновляю базу сервера, ну и наоборот. Этой схеме не один год, но может кто придумал что-то  более прогрессивное, а то слишком много кода в том числе и на PHP.

В общем предлагаю пофлудить! :wink:
Записан
Tonal
Гость
« Ответ #1 : Февраль 15, 2007, 09:13 »

HTTP не пробывал? ;-)
Записан
crocus
Гость
« Ответ #2 : Февраль 15, 2007, 10:20 »

Цитата: "Tonal"
HTTP не пробывал? ;-)

Шутка удалась!!
Понятно что на стороне сервера необходимые операции выполняются средствами PHP, а на стороне локальной - в программе, прозрачно для пользователя средствами Qt используя HTTP - GET, POST, Request и FTP.
Записан
Tonal
Гость
« Ответ #3 : Февраль 15, 2007, 10:51 »

Ну и что мешает использовать HTTP - GET, POST для передачи этих данных серверу?
Чем сжатый файл по FTP лучше?
Записан
crocus
Гость
« Ответ #4 : Февраль 19, 2007, 11:01 »

Тщеславия ради.
Додумал как лучше обновлять локальную базу MySQl с сервера.
Есть такой запрос "SHOW TABLE STATUS"- его результаты (интересует Name и Update_time) записываем в файл->сжимаем-скачиваем-> распаковываем - сравниваем с датой из settings -> и если таблицу надо обновлять снова шлем запрос на сервер -> записываем в файл-> запаковываем -скачиваем ...->обновляем таблицу - записываем новую дату в settings.
Если кому интересно, могу более подробно, с примерами, хотя смысл и так понятен.

На SQL.ru было упоминание о системе обмена документами EDI - кто-нибудь слышал что это такое и c чем его едят Улыбающийся
http://www.citforum.ru/internet/articles/xmledi.shtml
Записан
Tonal
Гость
« Ответ #5 : Февраль 19, 2007, 18:00 »

Этож сколько у тебя таблиц, что табличку из 2х колонок надобно сжимать?
И если уж данных такая прорва, то чем родное http сжатье (gzip, deflate) не устраивает?

Да, сдаётся мне, что описанная схема обмена может глючить при одновременных обращениях...
Записан
crocus
Гость
« Ответ #6 : Февраль 20, 2007, 01:23 »

Все шутишь Улыбающийся
Цитировать
чем родное http сжатье (gzip, deflate) не устраивает?

Исторически так сложилось, потому-что литературы было мало, и кроме того описанные методы работают преимущественно со строками, а мне было удобнее и понятнее с файлами. Например, до сих пор не понимаю как в архив (CLXXXII. Функции сжатия Zlib) добавить файл.

Вопрос:  как отправить  запрос на сервер мне понятно, а вот как получить его результаты в программу использую "родное http сжатье" совсем нет - пояснишь??
Цитата: "Tonal"
описанная схема обмена может глючить при одновременных обращениях...

Я думал об этом, имя архива и файлов таблиц генерируются из : имя файла/таблицы + идентификатор пользователя-получается уникально и глючить не должно, важно не забывать мусор подчищать, а то даже при  100  пользователях хламу будет .... 100х .

У тебя случайно нет телефонного справочника Новосибирска, хотел знакомых поискать.
Записан
Tonal
Гость
« Ответ #7 : Февраль 21, 2007, 14:52 »

Вот код на python-е который принимает gzip-нутый ответ сервера:
Код:

  req = urllib2.Request(url)
  req.add_header('Accept-encoding', 'gzip')
  page = urllib2.urlopen(url)
  data = page.read()
  if page.headers.get('content-encoding', '') != 'gzip':
    return data
  else:
    compressedstream = StringIO.StringIO(data)
    gzipper = gzip.GzipFile(fileobj=compressedstream)
    return gzipper.read()

Вроде всё прозрачно.
А документация в достаточном количестве по ключевым словам mod_gzip, mod_deflate.
Записан
Admin
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1988



Просмотр профиля
« Ответ #8 : Февраль 21, 2007, 17:18 »

способов несколько
1. открыть mysql сокет и работать с базой напрямую
2. прослойка apache+php+mysql на серверу
3. mysql позволяет бинарные логи писать их можно по ftp сувать
4. писать самому протокол общения типа на CORBA
Записан
zabivator
Гость
« Ответ #9 : Февраль 21, 2007, 18:01 »

DBUS?
Записан
TukiNov
Гость
« Ответ #10 : Февраль 21, 2007, 20:42 »

Цитата: "Admin"
способов несколько
1. открыть mysql сокет и работать с базой напрямую
2. прослойка apache+php+mysql на серверу
3. mysql позволяет бинарные логи писать их можно по ftp сувать
4. писать самому протокол общения типа на CORBA

можно про второй пункт подробнее ? Улыбающийся
а то у меня тоже оракл на серваке, а прямого ип-адреса нет.
Записан
Admin
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1988



Просмотр профиля
« Ответ #11 : Февраль 23, 2007, 20:00 »

про второе - уже тебе предлагали общение по HTTP протоколу
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.14 секунд. Запросов: 22.