Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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


Страницы:   1 2 3

Pcrepair ©   (2012-04-26 13:20:00) 

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

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


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


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


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

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

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


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


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


AV   (2012-04-26 16:31:00) [22]


> так значит нужно подучить 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


Pcrepair   (2012-04-26 16:29:00) [23]

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


Anatoly Podgoretsky   (2012-04-26 16:26:00) [24]


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

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


Pcrepair   (2012-04-26 16:22:00) [25]

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


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

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


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

проще всего прикрутить БД.
таблица (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, заказал себе деревянный пиджак


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


> может и так


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


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


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


Pcrepair   (2012-04-26 16:10:00) [28]

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


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


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

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


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

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

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


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

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

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


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

Ну ясно.

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


Pcrepair   (2012-04-26 15:47:00) [33]

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


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


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


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

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


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

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

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

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


AV   (2012-04-26 15:15:00) [36]

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

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

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


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

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


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

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


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


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


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


brother   (2012-04-26 15:04:00) [40]

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


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо