﻿<?xml version='1.0' encoding='UTF-8'?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>Релиб / Веб-программирование / PHP  / Прервать выполнение запроса к MSSQL при закрытии браузера / Latest Posts</title><generator>InstantForum.NET v4.1.4</generator><description>Релиб</description><link>http://www.relib.com/forums/</link><webMaster>robot@relib.com</webMaster><lastBuildDate>Sat, 22 Nov 2008 19:51:49 GMT</lastBuildDate><ttl>20</ttl><item><title>RE: Прервать выполнение запроса к MSSQL при закрытии браузера</title><link>http://www.relib.com/forums/Topic863266-17-1.aspx</link><description>Задался той же проблемой, нашёл решение:&lt;BR&gt;1. после соединения с базой данных определяем @@SPID процесса и заносим его в COOKIE&lt;BR&gt;2. в теле страницы, после закрытия которой завершаем процесс создаём скрипт:&lt;/P&gt;&lt;P&gt;[code]&amp;lt;script&amp;gt;&lt;/P&gt;&lt;P&gt;var UserClicked=false;&lt;/P&gt;&lt;P&gt;document.onkeydown = checkKey;&lt;BR&gt;document.onmousedown = checkKey;&lt;/P&gt;&lt;P&gt;function checkKey()&lt;BR&gt;{&lt;BR&gt;   UserClicked=true;&lt;BR&gt;   setTimeout("UserClicked=false",2000);&lt;BR&gt;}&lt;/P&gt;&lt;P&gt;function popup()&lt;BR&gt;{&lt;BR&gt;  if(!UserClicked)&lt;BR&gt; {&lt;BR&gt;   var win=window.open("","","width=300,height=300")&lt;BR&gt;                  win.location.href="scripts/kill.php";&lt;BR&gt; }&lt;BR&gt;}&lt;BR&gt;window.onunload=popup;&lt;/P&gt;&lt;P&gt;&amp;lt;/script&amp;gt;[/code]&lt;/P&gt;&lt;P&gt;3. собственно скрипт kill.php&lt;BR&gt;[code]&lt;BR&gt;&amp;lt;?&lt;BR&gt;$spid=$_COOKIE['spid'];&lt;/P&gt;&lt;P&gt;$link_new=mssql_connect($serv , $user , $pass);&lt;/P&gt;&lt;P&gt;mssql_query("kill $spid", $link_new);&lt;/P&gt;&lt;P&gt;echo $spid;&lt;BR&gt;echo '&amp;lt;br&amp;gt;Процесс завершен :)';&lt;BR&gt;?&amp;gt;&lt;BR&gt;[/code]&lt;BR&gt;</description><pubDate>Thu, 09 Nov 2006 11:25:39 GMT</pubDate><dc:creator>rend</dc:creator></item><item><title>RE: Прервать выполнение запроса к MSSQL при закрытии браузера</title><link>http://www.relib.com/forums/Topic863266-17-1.aspx</link><description>Нет, не работает. Но все равно спасибо.</description><pubDate>Wed, 30 Mar 2005 15:19:00 GMT</pubDate><dc:creator>maxim_march</dc:creator></item><item><title>RE: Прервать выполнение запроса к MSSQL при закрытии браузера</title><link>http://www.relib.com/forums/Topic863266-17-1.aspx</link><description>А if (connection_status()!=0) не помогает?</description><pubDate>Mon, 28 Mar 2005 18:10:00 GMT</pubDate><dc:creator>vers</dc:creator></item><item><title>RE: Прервать выполнение запроса к MSSQL при закрытии браузера</title><link>http://www.relib.com/forums/Topic863266-17-1.aspx</link><description>Вариант &lt;BR&gt;set_time_limit(0);&lt;BR&gt;ignore_user_abort(true);&lt;BR&gt;$query = &amp;quot;EXEC MakeReportTurnoverByCountry $im_ex, '$rc_periods', '$rc_countries', '$rc_delivery_tems'&amp;quot;;&lt;BR&gt;$rs = $engine-&amp;gt;dba_usr-&amp;gt;exec($query);&lt;BR&gt;$engine-&amp;gt;dba_usr-&amp;gt;disconnect();&lt;BR&gt;exit;&lt;BR&gt;прерывает выполнение запроса. Т.е., запрос выполняется асинхронно. Не работает ф-ия connection_aborted.</description><pubDate>Mon, 28 Mar 2005 13:55:00 GMT</pubDate><dc:creator>maxim_march</dc:creator></item><item><title>RE: Прервать выполнение запроса к MSSQL при закрытии браузера</title><link>http://www.relib.com/forums/Topic863266-17-1.aspx</link><description>Если я правильно понимаю проблему, то никак. Раз запрос выполняется очень долго, значит скрипт &amp;quot;висит&amp;quot; на строке&lt;BR&gt;$rs = $engine-&amp;gt;dba_usr-&amp;gt;exec($query);&lt;BR&gt;и в этот момент код PHP всего-лишь ждет ответа от БД, а скрипт не выполняется. Надо искать какой-то способ асинхронного выполнения запросов. Как это сделать в PHP я не знаю.</description><pubDate>Mon, 28 Mar 2005 13:08:00 GMT</pubDate><dc:creator>bazile</dc:creator></item><item><title>Прервать выполнение запроса к MSSQL при закрытии браузера</title><link>http://www.relib.com/forums/Topic863266-17-1.aspx</link><description>Может, вопрос глупый, но проблема такая: есть скрипт, с которого запускается очень длительный запрос к MSSQL (может выполняться до 10-30 минут). У пользователя в это время &amp;quot;висит&amp;quot; надпись &amp;quot;Подождите&amp;quot; и есть кнопка &amp;quot;Отмена&amp;quot;, которая выполняет закрытие окна браузера. Вопрос: как реализовать прекращение выполнения скрипта? Пробывал вот так:&lt;BR&gt;       set_time_limit(0);&lt;BR&gt;       ignore_user_abort(true);&lt;BR&gt;       $query = &amp;quot;EXEC MakeReportTurnoverByCountry $im_ex,  '$rc_periods', '$rc_countries', '$rc_delivery_tems'&amp;quot;;&lt;BR&gt;       $rs = $engine-&amp;gt;dba_usr-&amp;gt;exec($query);&lt;BR&gt;       if (connection_aborted())&lt;BR&gt;       {&lt;BR&gt;           $engine-&amp;gt;dba_usr-&amp;gt;disconnect();&lt;BR&gt;           exit;&lt;BR&gt;       }&lt;BR&gt;Не работает. Заранее спасибо.</description><pubDate>Mon, 28 Mar 2005 12:44:00 GMT</pubDate><dc:creator>maxim_march</dc:creator></item></channel></rss>