Страница 1 из 2
"Отмена запроса" как это сделать?
Добавлено: 23 мар 2007, 17:55
Dmitry74
С радостью узнал что ФБ2 можно отменять запросы!
Подскажите как это можно сделать програмно?
(использую ДЕЛФИ 7 Политра компонентов InterBase)
Добавлено: 23 мар 2007, 23:56
kdv
мда. если узнал, так скажи где - там же должно быть написано, как

Добавлено: 26 мар 2007, 11:23
Dmitry74
Там не написано!
Если не знаешь так и пиши не знаю!
Добавлено: 26 мар 2007, 11:31
Dmitry74
Проводил эксперемент
Запускал в приложении долгоиграющий запрос, а потом вырубал приложение из диспетчера задач.
Дак вот ФБ 1.5 с настойчивойстью осла продолжал выполнять этот запрос, а последний ФБ2 прекращал его выполнять (и правильно делал

)
Можно ли какнибудь программно дать команду серверу , что
запрос выполнять не нужно!?
Добавлено: 26 мар 2007, 17:51
kdv
Можно ли какнибудь программно дать команду серверу , что
запрос выполнять не нужно!?
НЕТ.
Выполнение запросов можно отменить только:
1. в IB 6.5 через спец-вызов IB API
2. в IB 7.x/2007 через таблицы tmp$
3. возможно в FB 2.1, через таблицы mon$. не уверен, что будет можно.
Если не знаешь так и пиши не знаю!
ты меня поучи еще, как мне отвечать на моем форуме, и чего я знаю, а чего нет. Если я чего не знаю, я или так и пишу, или вообще не отвечаю.
А вот ты где-то чего то "узнал", и даже не знаешь, где.
Добавлено: 27 мар 2007, 22:49
PagaN
Добавлено: 28 мар 2007, 11:15
WildSery
Поможет в чём?
Очень малое число запросов должно проектироваться с возможностью прерывания.
Из более чем 2000 у меня в базе - только 3 таких, прерываемых.
Про прерывание же "обычных" запросов уже всё сказано.
Добавлено: 28 мар 2007, 13:35
Dmitry74
WildSery писал(а):Поможет в чём?
Очень малое число запросов должно проектироваться с возможностью прерывания.
Из более чем 2000 у меня в базе - только 3 таких, прерываемых.
Про прерывание же "обычных" запросов уже всё сказано.
Скажите только одно
как прервать запрос выполняемый в потоке?
Ибо даже если поток уничтожаешь запрос продолжает выполняться.
Если же вырубить приложение то он прекращается.
Если не знаете то не пишите!!!
Добавлено: 28 мар 2007, 14:11
WildSery
Dmitry74 писал(а):Скажите только одно
как прервать запрос выполняемый в потоке?
Ибо даже если поток уничтожаешь запрос продолжает выполняться.
Такое впечатление, что ты не читаешь ответов.
Дмитрий тебе разжевал всё. На FB2 - никак.
Запрос выполняется не в потоке, а на сервере. А твой поток только ожидает получения данных (если упрощённо).
Добавлено: 28 мар 2007, 14:24
Dmitry74
WildSery писал(а):Dmitry74 писал(а):Скажите только одно
как прервать запрос выполняемый в потоке?
Ибо даже если поток уничтожаешь запрос продолжает выполняться.
Такое впечатление, что ты не читаешь ответов.
Дмитрий тебе разжевал всё. На FB2 - никак.
Запрос выполняется не в потоке, а на сервере. А твой поток только ожидает получения данных (если упрощённо).
Да я не правильно выразился!!!
Я прекрасно знаю, что запрос выполняется на сервере!
Поток в приложении да действительно ждёт ответа с сервера!
Как сделать чтобы поток прекращал ждать?
Проверял я в IBExpert может прекращать ждать! И сервер FB2 прекращает выполнять запрос. (в отличие от FB1.5).
Это всё проверено, а Вы говорите ,что никак.
Добавлено: 28 мар 2007, 14:39
WildSery
Dmitry74 писал(а):И сервер FB2 прекращает выполнять запрос. (в отличие от FB1.5).
Как ты это увидел, интересно знать.
Добавлено: 28 мар 2007, 14:43
CyberMax
Dmitry74 писал(а):Как сделать чтобы поток прекращал ждать?
Например, создаешь потомка от TThread, который запускает запрос и ждет его завершения. Этот вторичный поток можно в любое время терминировать. Хотя не факт, что это правильно.
Dmitry74 писал(а):Проверял я в IBExpert может прекращать ждать! И сервер FB2 прекращает выполнять запрос. (в отличие от FB1.5).
Спроси у Хвастунова, как он это сделал

.
Добавлено: 28 мар 2007, 14:44
CyberMax
WildSery писал(а):Dmitry74 писал(а):И сервер FB2 прекращает выполнять запрос. (в отличие от FB1.5).
Как ты это увидел, интересно знать.
Там же есть запуск в Background'е... Наверно, он про него говорит. Сам этим пользуюсь, когда предполагаю, что тестовый запрос будет выполняться очень долго.
Добавлено: 28 мар 2007, 14:50
Dmitry74
CyberMax писал(а):Dmitry74 писал(а):Как сделать чтобы поток прекращал ждать?
Например, создаешь потомка от TThread, который запускает запрос и ждет его завершения. Этот вторичный поток можно в любое время терминировать. Хотя не факт, что это правильно.
Dmitry74 писал(а):Проверял я в IBExpert может прекращать ждать! И сервер FB2 прекращает выполнять запрос. (в отличие от FB1.5).
Спроси у Хвастунова, как он это сделал

.
Спасибо что просвитил про TThread

это я и так знал!
Но вся фигня в том что поток НЕ УБИТЬ если он ждёт ответа с сервака!
А в IBExperte это научились делать!
Добавлено: 28 мар 2007, 14:53
Dmitry74
CyberMax писал(а):WildSery писал(а):Dmitry74 писал(а):И сервер FB2 прекращает выполнять запрос. (в отличие от FB1.5).
Как ты это увидел, интересно знать.
Там же есть запуск в Background'е... Наверно, он про него говорит. Сам этим пользуюсь, когда предполагаю, что тестовый запрос будет выполняться очень долго.
Совершенно верно!!!
аналогично делаю!!!

Добавлено: 28 мар 2007, 14:54
Dmitry74
WildSery писал(а):Dmitry74 писал(а):И сервер FB2 прекращает выполнять запрос. (в отличие от FB1.5).
Как ты это увидел, интересно знать.
Про диспетчер задач слышали?
Добавлено: 28 мар 2007, 14:57
Dmitry74
CyberMax писал(а):Dmitry74 писал(а):Как сделать чтобы поток прекращал ждать?
Например, создаешь потомка от TThread, который запускает запрос и ждет его завершения. Этот вторичный поток можно в любое время терминировать. Хотя не факт, что это правильно.
Dmitry74 писал(а):Проверял я в IBExpert может прекращать ждать! И сервер FB2 прекращает выполнять запрос. (в отличие от FB1.5).
Спроси у Хвастунова, как он это сделал

.
Гражданин Хвастунов ответьте ПОЖАЛУЙста!

Добавлено: 28 мар 2007, 16:18
CyberMax
Dmitry74 писал(а):Спасибо что просвитил про TThread

это я и так знал!
Но вся фигня в том что поток НЕ УБИТЬ если он ждёт ответа с сервака!
Неправда. Для этого есть WinAPI функция TerminateThread, но у нее побочные эффекты.
Dmitry74 писал(а):Гражданин Хвастунов ответьте ПОЖАЛУЙста!
Не ответит. Хвастуонв - автор IB Expert и здесь не появляется. Спрашивай на сайте Эксперта

.
P.S. Считается хорошим тоном в цитировании использовать только фразу, на которую отвечаешь. Иначе посты становятся громоздкими и иногда бывает не понятно, к чему привязываешь свой ответ.
Добавлено: 28 мар 2007, 16:33
WildSery
Блин
Я отлично знаю, что делает эксперт.
Но убитие потока, который ожидает ответа сервера
не прекращает выполнение запроса на сервере.
Dmitry74 писал(а):Про диспетчер задач слышали?
Как ты в диспетчере задач видишь, выполняет сервер твой запрос или уже нет?
Добавлено: 28 мар 2007, 17:05
CyberMax
Давайте подытожим. Выполнение запроса нельзя отменить, но можно завершить поток, запустивший запрос, что приводит к остановке его [запроса] выполнения сервером.
WildSery писал(а):Как ты в диспетчере задач видишь, выполняет сервер твой запрос или уже нет?
Серега, хорош дурака валять. Сам догадаешься или методику рассказать?