![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Программные глюки
igorx © (2002-05-07 17:05:00)Моя программа получает запросы от клиентов по сокету,
формирует запрос к SQL-серверу, сует его в поток, запускает на выполнение, получает результат и отправляет его по сокету обратно клиенту. Периодически (1-2 раза в сутки) Windows2000
выгружает программу из памяти без всяких объяснений.
Может у кого-нибудь есть версии по этому поводу?
igorx (2002-05-08 12:43:00) [1]Да брось пожалуйста на alshapa@box.vsi.ru
Johnny Smith (2002-05-08 10:34:00) [2]2igorx
Я почему про сокеты-то спросил: обычно в серьезных прогах принято самим писать сокеты, т.е. оболочку вокруг WinSocket"а. Дело в том, что в Дельфях (да простит меня Борланд) кривовато написаны некоторые вещи (напр. сокеты и потоки). Я-то когда писал программульки на сокетах, не ориентировал их на серьезное применение, поэтому пользовался стандартными TServerSocket&TClientSocket. Но при этом я заюзал такую вещь, как TServerClientThread. При коннекте к серверу на нем создается новый поток (на протяжении всего сеанса связи), в котором слушаются запросы от клиента и отправляются ответы на них. Тут же, в потоке, ты можешь создавать классы для коннекта к БД и выполнения запросов. Таким образом, тебе, я думаю, удастся уйти от очереди (слишком муторная вещь, на мой взгляд). Если заинтересуешься, я на мыло брошу исходники.
Reindeer Moss Eater (2002-05-08 09:39:00) [3]В таких случаях только лог и поможет.
Если это не так, то твой лог только занимает лишние кластеры диска.
А конструкции try ... except даны нам чтобы писать в лог что за ошибки происходят в программе.
igorx (2002-05-08 09:30:00) [4]Прошу прощенья за дублирование информации в конференции.
Под "логом программы" я имел ввиду текстовый файл, в который она
выводит определенную информацию (проход контрольных точек). Вряд ли он чем-нибудь тебе поможет (тем более, там в последней строке каждый раз разное). А что под логом имеешь ввиду ты?
Reindeer Moss Eater (2002-05-08 09:23:00) [5]И все таки, что написано в последней строке лога твоей программы?
igorx (2002-05-08 09:19:00) [6]Использую TServerSocket&TClientSocket.
Создаю фиксированное число потоков в начале программы, затем выделяю их под выполнение команды, если нет свободного потока,
команду ставлю в очередь (TLIST).
Вся программа в try (несколько уровней). Лог разумеется я смотрел. Никаких идей (все время вылет в разных местах).
А вообще, по причине каких искл. ситуаций программа может так тихо умирать?
Reindeer Moss Eater (2002-05-08 09:16:00) [7]И что написано в последней строке лога твоей программы?
igorx (2002-05-08 09:14:00) [8]Моя программа работает на TServerSocket&TClientSocket, фиксированное число потоков создается в начале программы
и затем (при попытке выполнения команды SQL) программа
ищет свободный поток, при его осутствии ставит команду в
очередь (TLIST).
Лог я разумеется смотрел. Никаких идей. По поводу искл.
ситуаций: во-первых - ВСЯ программа в try"ях (несколько
уровней!), во-вторых - вылетает без выдачи каких-либо
окон. А вообще, какие искл. ситуации могут вызвать такой вылет?
Johnny Smith (2002-05-07 17:58:00) [9]Reindeer Moss Eater прав. По всей видимости, возникают какие-то исключительные ситуации.
Всвязи с этим у меня есть пара вопросов: на каких сокетах работает твоя прога (TServerSocket&TClientSocket или других) и как создаешь поток?
Reindeer Moss Eater (2002-05-07 17:17:00) [10]Надо просто почитать лог, который такие программы обязательно должны вести.