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