Прервать выполнение запроса к MSSQL

  • Автор темы max
  • Дата начала
Статус
Закрыто для дальнейших ответов.
M
#1
Может, вопрос глупый, но проблема такая: есть скрипт, с которого запускается очень длительный запрос к MSSQL (может выполняться до 10-30 минут). У пользователя в это время "висит" надпись "Подождите" и есть кнопка "Отмена", которая выполняет закрытие окна браузера. Вопрос: как реализовать прекращение выполнения скрипта? Пробывал вот так:
set_time_limit(0);
ignore_user_abort(true);
$query = "EXEC MakeReportTurnoverByCountry $im_ex, '$rc_periods', '$rc_countries', '$rc_delivery_tems'";
$rs = $engine->dba_usr->exec($query);
if (connection_aborted())
{
$engine->dba_usr->disconnect();
exit;
}
Не работает. Заранее спасибо.
 
B

Barmutik

#2
Насколько мне известно прервать запрос не возможно...

Может не совсем в тему совет:

Время выполнения правильно построенного запроса на грамотно настроенный сервер не должно превышать 10-20 секунд.

Возможно стоит попробовать перестроить запрос или алгоритм обращени к данным.
 
G

Guest

#3
Не написал, но почему-то этот вариант завершается сразу (выполнение запроса прерывается).
$query = "EXEC MakeReportTurnoverByCountry $im_ex, '$rc_periods', '$rc_countries', '$rc_delivery_tems'";
$rs = $engine->dba_usr->exec($query);
$engine->dba_usr->disconnect();
exit;

А насчет перестройки запроса - не выйдет. Это программа статистической обработки, данных очень много и оптимизировать до 20-и секунд не получится :(
 
B

Barmutik

#4
Ну может стоит разработать другой механизм хранения статистической информации ...

Т.е. после её поступления в базу происходит постпроцессинг, который позволяет хранить данные уже в подготовленной сгрупированной форме.

А поьлзователь при своём обращении работает уже с подготовленными данными...
 
M
#5
Мы систему сдаем через неделю :( Не, ну понятно, что глупо, что раньше не подумали, но это не моя вина. А заканчивать-то надо :(
 
B

Barmutik

#6
Ну вообщем то да ... но просто система в которой время ожидания выполнения запроса пользователя достигает 10-20 минут ...

Ну как бы ... мягко говоря не совсем красиво смотрится ... но это в принципе моё мнение ... :(
 
G

Guest

#7
Да, забыл сказать: работа с базой идет через ODBC
 
Статус
Закрыто для дальнейших ответов.