Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Вниз

Многопользовательский режим работы проги   Найти похожие ветки 

 
Pcrepair ©   (2012-04-26 13:20) [0]

Добрый день. Есть программа, написанная в стиле процедурного програмированния в РАД2010:
- программа имеет GUI (МЕМО1, МЕМО2, Кнопка и дополнительно настройка алгоритма обработки)
- пользователь вводит исходные данные в окно ввода МЕМО1, нажимает кнопку
- программа обрабатывает данные по сложному алгоритму, зависящему от введенных пользователем данных (текст)
- программа выводит результат работы в МЕМО2
на это цикл работы программы заканчивается
В ближайшее время кнопка и МЕМО1,2 будут вынесены в ВЕБ-интерфейс (ВЕБ-сервер на одном хосте в просторах интернета) и пользователь будет подключаться к программе как к удаленному сервису через браузер.
на текущий момент и после подключения ВЕБ-интерфейса программа одномоментно может работать только с одним пользователем, демо-версия

Вопрос: каким образом можно ввести многопользовательский режим:
- каждый пользователь получает свою сесссию на ВЕБ-сервере, это понятно
- каждый пользователь должен получить на сервере приложения свой поток?
в общем как перевести программу написанную для работы с одним пользователем в многопользовательский режим? какие для этого существуют способы?


 
Сергей М. ©   (2012-04-26 13:33) [1]


> каждый пользователь должен получить на сервере приложения
> свой поток?


Ну что значит "должен" ?

Что клиенту предлагает конкретный сервер в силу своих технол.особенностей - теми возможностями  клиент и сможет воспользоваться.

Не поддерживает сервер мультипоточного параллельного обслуживания своих клиентов - значит клиенты выстраиваются в очередь и курят бамбук.

А поддерживает - значит клиентские запросы сервер будет обрабатывать параллельно.

Никому ж кроме тебя не известно что у тебя там за веб-сервер ..


 
Pcrepair ©   (2012-04-26 13:41) [2]

причем тут веб-сервер?
к веб-серверу подключается с одной стороны пользователь через браузер, с другой стороны сервер приложений, на котором установлена программа
че то еще неясно?


 
Сергей М. ©   (2012-04-26 14:15) [3]


> причем тут веб-сервер?


Притом что ты сам сказал про него.


> к веб-серверу подключается .. сервер приложений


Сервер подключается к серверу - это нонсенс.


 
Pcrepair ©   (2012-04-26 14:27) [4]

нонсенс это только в твоем понимании
"роботы делают роботов - какой ужас!!!"(с)
если чего не понял в топике - переспроси, хотя вроде задачу понятно описал?


 
Медвежонок Пятачок ©   (2012-04-26 14:30) [5]

- каждый пользователь должен получить на сервере приложения свой поток?

тебе-то какая разница? один там поток, два там потока или вообще нет потоков


 
Медвежонок Пятачок ©   (2012-04-26 14:31) [6]

ты когда на делфимастер заходишь, сильно паришься насчет потоков которые получает твой браузер здесь ?


 
Сергей М. ©   (2012-04-26 14:32) [7]


> вроде задачу понятно описал


Описал бы понятно - не было бы вопросов.


> это только в твоем понимании


В любом понимании при установлении tcp-соединения одна сторона есть клиентская, другая серверная.


 
Сергей М. ©   (2012-04-26 14:33) [8]


> Медвежонок Пятачок ©   (26.04.12 14:31) [6]


Он не парится - он сразу пальцы гнет.


 
Плохиш ©   (2012-04-26 14:37) [9]


> Вопрос: каким образом можно ввести многопользовательский
> режим:

Это введёт веб-хостинг независимо от твоих желаний.


 
Плохиш ©   (2012-04-26 14:38) [10]


> Pcrepair ©   (26.04.12 13:41) [2]

Почитал бы что-нибуть про программирование для веба.


 
Anatoly Podgoretsky ©   (2012-04-26 14:43) [11]

> Плохиш  (26.04.2012 14:38:10)  [10]

Лучше вообще почитать что-нибуть про программирование, не до ВЕБа


 
Pcrepair ©   (2012-04-26 14:43) [12]

программа вообщето на дельфи УЖЕ написана  и работает, если кто то еще не понял


 
AV ©   (2012-04-26 14:46) [13]

больная фантазия предполагает такой сценарий:

автор думает ,что надо сделаеть страницу, которая будет из своей TEXTAREA как-то копировать в MEMO и жмакать кнопку.
Эдакая проекция webлица на form1, 1:1

Соответственно, автор опасается, что раз МЕМО уже заполнено кем-то, а в это время еще кто-то жмакает, то его данные не могут в memo быть вставлены - там еще данные первого человека.

по-моему ,так :)


 
Плохиш ©   (2012-04-26 14:47) [14]


> Pcrepair ©   (26.04.12 14:43) [12]
>
> программа вообщето на дельфи УЖЕ написана  и работает

и что?


 
Плохиш ©   (2012-04-26 14:48) [15]


> Anatoly Podgoretsky ©   (26.04.12 14:43) [11]

Зачем ты оскорбляешь суперпрограммиста?


 
Сергей М. ©   (2012-04-26 14:48) [16]


> программа вообщето на дельфи УЖЕ написана


Придется переписывать в полном соответствии с выбранной веб-технологией.


 
Сергей М. ©   (2012-04-26 14:50) [17]


> AV ©   (26.04.12 14:46) [13]


Похоже на тяжелую бредовую но правду)


 
Pcrepair ©   (2012-04-26 14:52) [18]

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


 
Anatoly Podgoretsky ©   (2012-04-26 14:55) [19]

> Pcrepair  (26.04.2012 14:52:18)  [18]

С одним экземляром то тяжело, а тут несколько


 
brother ©   (2012-04-26 15:02) [20]

для каждой сессии свой поток...


 
brother ©   (2012-04-26 15:04) [21]

а вообще, бред и не понимание...


 
Сергей М. ©   (2012-04-26 15:08) [22]


> Pcrepair ©   (26.04.12 14:52) [18]


Переделывай свою чудо-программу в cgi-bin, isapi или fastCGI (на свой вкус и возможности веб-сервера)


 
Медвежонок Пятачок ©   (2012-04-26 15:09) [23]

да все нормально. прога уже написана и даже работает. и даже долго.


 
CRLF   (2012-04-26 15:13) [24]

вы все ламера и неучитесь нешарите так незасоряйте форум!!!!!!!!111


 
AV ©   (2012-04-26 15:15) [25]

не, теперь примерно ясно что надо
1 . сессия кидает строку1 и idконнектX в процесс,
2. процесс рожает поток, иницирует его строкой1, присваивая идентификатор сессии и запускает на обсчет
3. Поток отработал,  получив строку2, и рапортует процессу.
Процесс выталкивает эту строку2 в idконнектX и убивает поток.

а вообще - муторно это дело.. Проще оставить 1 процесс на 1 коннект, как и делается автоматически.

зы
А на программу то посмотреть можно?
Что это вообще и насколько сложно (может, какой нить JS пойдет вполне :))


 
Pcrepair ©   (2012-04-26 15:31) [26]

так что? нужно копать в сторону потоков?
типа "обернуть" имеющийся код в поток, какойто диспетчер потоков? как это правильно называется, чтоб можно было в поисковике правильно спросить

программу пока посмотреть нельзя. но после подключения к веб-серверу можно будет, если случайно наткнешся на этот ЧАТ, посмотреть как она работает: задать вопрос и получить ответ

пока программа не слишком сложна, поскольку ее смог написать начинающий программист. но там заложена возможность усложнения логики и соотвественно усложнения практически до бесконечности


 
Сергей М. ©   (2012-04-26 15:37) [27]


> Pcrepair ©   (26.04.12 15:31) [26]


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

От этого напрямую выбор решения по мультипоточности программулины зависит ..


 
Pcrepair ©   (2012-04-26 15:47) [28]

технология предполагается простая:
кусок программы на базе idHTTP подключается к веб-серверу и считывает задание пользователя и подтверждение выполнения(типа бтн.клик)
выполняет задание и отсылает результат, опять же через idHTTP, взад в ЧАТ, где результат(текст) отображается на ХТМЛ-странице
а пока задание выполняется выводит сообщение для всех новых пользователей "ЗАНЯТО"


 
Сергей М. ©   (2012-04-26 15:55) [29]

Ну ясно.

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


 
Pcrepair ©   (2012-04-26 16:00) [30]

может и так
хотя все вычисления производятся таки на этом сервере, и если это не "сервер приложений" то можно обозвать и клиентом

кстати вопрос был не том как называть эту петрушку, а о том как перевести петрушку в многопользовательский режим. учти это


 
Медвежонок Пятачок ©   (2012-04-26 16:04) [31]

технология предполагается простая:........

это не технология, это даже не ручное рубило и не палка-копалка в палеолите.
рубило и палка - они куда более технологичные.


 
QAZ   (2012-04-26 16:06) [32]


> цикл обработки задания пользователя занимает от нескольуих
> минут до нескольких часов. специфика такая

мошт не специфика а голимый (очень) алгоритм?


 
Pcrepair ©   (2012-04-26 16:10) [33]

а по существу вопроса кто что знает?


 
Сергей М. ©   (2012-04-26 16:13) [34]


> может и так


Что ж ты тогда пальцы гнул в [2] и [4] ?
Не стоит этого делать)
Учти это.


> как перевести петрушку в многопользовательский режим


Т.е. вариант с переделкой петрушки [22] ты вообще не воспринимаешь как серьезный ?


 
AV ©   (2012-04-26 16:15) [35]

проще всего прикрутить БД.
таблица (ID, IN_STR, OUT_STR)
каждый новый коннект пишет свой ID и IN_STR в таблицу
программа читает IN_STR, считает, пишет OUT_STR
Каждый коннект проверяет, а не посчитали ли уже его OUT_STR.

Да, программка периодически делает
select ID, IN_STR, OUT_STR
where OUT_STR <> null
и на каждую запись стартует поток.
Поток посчитал, записал OUT_STR по соотв. ID, заказал себе деревянный пиджак


 
Pcrepair ©   (2012-04-26 16:22) [36]

так значит нужно подучить Classes.TThread?
а БД эта типа ДИСПЕТЧЕР?


> Т.е. вариант с переделкой петрушки [22] ты вообще не воспринимаешь
> как серьезный ?

конечно нет. все что нужно - ввести многопоточность. и причем тут cgi-bin, isapi или fastCGI? это ведь прибамбасы Веб-сервера. каим оне боком имеют отношение к уже работающему ЧАТу на АПАЧе + РНР. все и так работает. может cgi-bin, isapi или fastCGI чем то лучше, все возможно. но пока речь идет о деио-версии. главное чтоб все вертелось. улучшать будем потом. может быть


 
Anatoly Podgoretsky ©   (2012-04-26 16:26) [37]


> а по существу вопроса кто что знает?

Сказали потоки, значит потоки.


 
Pcrepair ©   (2012-04-26 16:29) [38]

может кто и сказал, да не ты. ты больше тень на плетень наводить любитель


 
AV ©   (2012-04-26 16:31) [39]


> так значит нужно подучить Classes.TThread?
> а БД эта типа ДИСПЕТЧЕР?

да, книга
http://www.delphimaster.net/view/15-1282149795/all

она же

http://www.google.ru/#hl=ru&newwindow=1&q=%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE%D0%BF%D0%BE%D1%82%D0%BE%D1%87%D0%BD%D0%BE%D1%81%D1%82%D1%8C+-+%D0%BA%D0%B0%D0%BA+%D1%8D%D1%82%D0%BE+%D0%B4%D0%B5%D0%BB%D0%B0%D0%B5%D1%82%D1%81%D1%8F+%D0%B2+%D0%B4%D0%B5%D0%BB%D1%8C%D1%84%D0%B8&oq=%D0%9C%D0%BD%D0%BE%D0%B3%D0%BE%D0%BF%D0%BE%D1%82%D0%BE%D1%87%D0%BD%D0%BE%D1%81%D1%82%D1%8C+-+%D0%BA%D0%B0%D0%BA+%D1%8D%D1%82%D0%BE+%D0%B4%D0%B5%D0%BB%D0%B0%D0%B5%D1%82%D1%81%D1%8F+%D0%B2+Delphi&aq=0t&aqi=g-t1&aql=&gs_nf=1&gs_l=serp.1.0.0i2.82749.82749.0.84112.1.1.0.0.0.0.298.298.2-1.1.0.nPOZsG_ELH0&bav=on.2,or.r_gc.r_pw.,cf.osb&fp=a1b55aeb7d301186&biw=1178&bih =881


 
Сергей М. ©   (2012-04-26 16:34) [40]


> это ведь прибамбасы Веб-сервера


Угу.
И среди этих "прибамбасов" у Апача есть уже реализованный механизм многопоточности исполнения клиентских запросов.

В случае с cgi-bin и isapi тебе нужно будет только под него "подстроиться" и не изобретать велосипед с собственными потоками.

Ну и php-скрипт чуть подзаточить под это дело придется.


> главное чтоб все вертелось. улучшать будем потом. может
> быть


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



Страницы: 1 2 вся ветка

Форум: "Начинающим";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.55 MB
Время: 0.063 c
2-1340219005
Dron83
2012-06-20 23:03
2013.03.22
IdUDPClient1.SendBuffer(t.memory^,t.size);


2-1345561687
toropoff
2012-08-21 19:08
2013.03.22
как понять case в описании записи?


15-1340972066
Омлет
2012-06-29 16:14
2013.03.22
Почему в русском при отрицании [всё] = [ничего]?


15-1335360956
Программист Максим
2012-04-25 17:35
2013.03.22
Посоветуйте HTML-PHP-CSS-JavaScript редактор.


2-1330269660
Незнающий усталости
2012-02-26 19:21
2013.03.22
Как задать фокус ячейки?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский