Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.55/20: Рейтинг темы: голосов - 20, средняя оценка - 4.55
rend
1

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

09.11.2006, 14:25. Показов 3967. Ответов 5
Метки нет (Все метки)

Задался той же проблемой, нашёл решение:
1. после соединения с базой данных определяем @@SPID процесса и заносим его в COOKIE
2. в теле страницы, после закрытия которой завершаем процесс создаём скрипт:
Код
<script>
var UserClicked=false;
document.onkeydown = checkKey;
document.onmousedown = checkKey;
function checkKey()
{
   UserClicked=true;
   setTimeout("UserClicked=false",2000);
}
function popup()
{
  if(!UserClicked)
 {
   var win=window.open("","","width=300,height=300")
                  win.location.href="scripts/kill.php";
 }
}
window.onunload=popup;
</script>
3. собственно скрипт kill.php
Код
<?
$spid=$_COOKIE['spid'];
$link_new=mssql_connect($serv , $user , $pass);
mssql_query("kill $spid", $link_new);
echo $spid;
echo '
Процесс завершен :)'
?>

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.11.2006, 14:25
Ответы с готовыми решениями:

Как прервать выполнение запроса?
Пишу на Delphi+ADO+MDB база. Есть компонент ADOQuery. В коде запускаю: ADOQuery1.Active = true;...

Выполнение запроса из клиента Делфи на MSSQL
Здравствуйте! Проблема в следующем.... Есть запрос в MS SQL фал - New.sql как его (ЗАПРОС)...

Выполнение запроса к БД MSSQL в асинхронном режиме
Вопрос такой : в PHP 5 при использовании драйверов ODBC по неизвестной причине запрос типа 'SELECT...

Как прервать выполнение программы при некотором условии?
Всем здравствуйте. Вопрос по отладке программ в C++Builder6. void __fastcall...

5
0 / 0 / 0
Регистрация: 05.06.2011
Сообщений: 5
05.06.2011, 13:21 2
Может, вопрос глупый, но проблема такая: есть скрипт, с которого запускается очень длительный запрос к 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;
}
Не работает. Заранее спасибо.
0
80 / 56 / 68
Регистрация: 15.03.2007
Сообщений: 6,908
05.06.2011, 13:45 3
Если я правильно понимаю проблему, то никак. Раз запрос выполняется очень долго, значит скрипт 'висит' на строке
$rs = $engine->dba_usr->exec($query);
и в этот момент код PHP всего-лишь ждет ответа от БД, а скрипт не выполняется. Надо искать какой-то способ асинхронного выполнения запросов. Как это сделать в PHP я не знаю.
0
0 / 0 / 0
Регистрация: 05.06.2011
Сообщений: 5
05.06.2011, 14:32 4
Вариант
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);
$engine->dba_usr->disconnect();
exit;
прерывает выполнение запроса. Т.е., запрос выполняется асинхронно. Не работает ф-ия connection_aborted.
0
3 / 3 / 6
Регистрация: 20.06.2010
Сообщений: 580
05.06.2011, 18:47 5
А if (connection_status()!=0) не помогает?
0
0 / 0 / 0
Регистрация: 05.06.2011
Сообщений: 5
07.06.2011, 15:56 6
Нет, не работает. Но все равно спасибо.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.06.2011, 15:56

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Как прервать выполнение тестового метода при отсутствии соединения с Интернет
В проекте с юнит-тестами (VS 2010) есть метод, который тестирует некую функцию. Но чтобы ее...

Session destroy при закрытии браузера
Добрый день дамы и господа. Меня интересует как закрыть сессию при закрытии браузера. Ну и хотелось...

Сохранение корзины при закрытии браузера
Как сохранять корзину в cookie? Есть такой код, он работает, не не сохраняет корзину Контроллер...

Действия при закрытии окна браузера
Интересует можно ли когда пользователь закрывает браузер или вкладку сайта выполнить запрос в базу...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.