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

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

как корректно завершать работу с поднятым IdHTTPServer ?


laao ©   (2008-05-08 15:47:00) 

есть сервис на Delphi, внутри сервиса создается Indy HTTPServer, который будет получать большое число запросов GET. то есть в момент завершения сервиса (событие onStop или onShutdown) будет существовать некоторое количество потоков, обрабатывающих запросы. как дождаться в методе их завершения ? или это не нужно руками делать ?


Anatoly Podgoretsky   (2008-05-09 09:54:00) [1]

> laao  (08.05.2008 17:04:06)  [6]

Разрушишь базы или систему. Нельзя блокировать завершение Виндоус.


laao   (2008-05-08 17:41:00) [2]

... для обращения к IdHTTPServer.Threads нужно было руками добавить в uses IdTCPServer


laao   (2008-05-08 17:04:00) [3]

Reindeer Moss Eater

спасибо

Anatoly Podgoretsky

объясните, плз, почему


Reindeer Moss Eater   (2008-05-08 16:59:00) [4]

try
 with IdHTTPServer1.Threads.LockList do ShowMessageИлиКакТоПоДругому('всего сессий:' + IntToStr(Count));
finally
 IdHTTPServer1.Threads.UnlockList;
end;


Reindeer Moss Eater   (2008-05-08 16:51:00) [5]

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


Anatoly Podgoretsky   (2008-05-08 16:50:00) [6]

> palva  (08.05.2008 15:57:01)  [1]

У оператора могут проблемы не только со стартом этого сервиса, но и со стартом Виндоус.


laao   (2008-05-08 16:00:00) [7]

нет, тут важно обработать корректно все те запросы, которые были приняты

да там то и у HTTPServer параметр TerminateWaitTime стоит в 20000, то есть 20с на запрос максимум ... но не ждать же их каждый раз в onStop sleep'ом. а как посмотреть для компонента IdHTTPServer количество потоков обработки я не знаю


palva   (2008-05-08 15:57:00) [8]

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


Наверх

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