Форум: "Начинающим";
Текущий архив: 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.108 c