问题标签 [request-cancelling]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
928 浏览

php - 是否在“ESC”上取消了通过 AJAX 调用的 PHP 进程?

如果我进行 AJAX 调用,如果用户按下“ESC”或离开该页面,AJAX 调用会被取消吗?

如果 AJAX 调用被取消,我的 PHP 脚本会继续运行直到它完成它正在做的事情(前提是没有达到时间限制或任何其他服务器配置停止。),还是该进程会同时被杀死它所属的 Apache 孩子?

如果该进程确实被 Apache 子进程杀死,即使它没有完成,那么保持它活着的最佳方法是什么,或者我应该考虑哪些其他选择?(ZendX_Console_Process_Unix 不是一个选项)。

谢谢!

后来的发现:

如果我在 Firefox 中点击“ESC”(在 firebug 中检查),AJAX 调用实际上会被取消。PHP 进程继续进行,不受按 ESC 或关闭选项卡的影响。

0 投票
7 回答
18033 浏览

php - 如何取消已运行的 ajax 请求(在服务器端)

我想知道是否有一种简单的方法可以取消 AJAX 请求?

除了在客户端调用 XMLHTTPRequest 的“中止”之外,有没有办法轻松停止服务器进程?服务器正在使用 Apache。

谢谢

0 投票
3 回答
9970 浏览

wcf - 如何取消 WCF 服务调用?

我有一个长时间执行的 WCF 函数,所以我在 UI 中用 backgraundworker 调用该函数...我想提供一个取消执行的功能,所以我中止了 IComunicationObject,问题是服务执行没有停止,是在这种情况下有什么方法可以停止服务执行?

0 投票
2 回答
4649 浏览

c# - 后台工人类取消,设置取消挂起标志但不退出

我打电话给 obackgroundworker.CancelAsync(); 在当前在另一个线程中做一些工作的后台工作人员上,然后使用 while (obackgroundworker.IsBusy == true) 等待它在退出应用程序之前完成(以防用户在线程不在处理时改变主意并且我想要干净地关闭)

取消挂起的平面正确设置为true,但线程没有退出,在我有的工作线程中:

应该检查取消是否挂起,然后将取消标志设置为true,我认为这也会导致线程实际终止......?或者当它检测到取消实际结束时,我需要从线程调用一些其他函数吗?

我已经阅读了很多使用与上面完全相同的后台工作人员的示例,并且没有报告任何问题。

资料来源:

http://www.albahari.com/threading/part3.aspx http://www.dotneat.net/2009/02/10/BackgroundworkerExample.aspx http://www.codeproject.com/KB/cpp/BackgroundWorker_Threads。 aspx

谢谢

0 投票
1 回答
901 浏览

soap - SOAP 是否支持取消呼叫?

使用 SOAP 协议时,是否可以使用 SOAP 取消挂起的远程函数调用?

我看到三种不同的情况:

  • A) 向需要很长时间才能完成的服务发出请求。例如,当复制包含大量文件的目录时,可以取消文件复制循环吗?

  • B) 发出一个返回长列表的请求。例如,当查询一个很大的内存用户名列表时,这个列表响应的传输可以取消吗?

  • C) 取消仍在内部呼叫队列中的呼叫;换句话说,在服务器开始处理它之前。在短时间内发出大量异步调用时,可能会发生这种情况。

0 投票
3 回答
1899 浏览

php - Symfony:ajax调用导致服务器排队下一个查询

当服务器上的 ajax 调用花费太多时间时,我的应用程序出现问题:它将用户的所有其他查询排队,直到它完成服务器端(我意识到取消调用客户端没有效果,用户仍然必须等待)。

这是我的测试用例:

因此,当 get 被触发,然后在我单击链接后,服务器完成第一次调用,然后将我带到另一个页面。我的问题是我想避免这种行为。

我在 LAMP 服务器上,我正在寻找一种方法来通知服务器用户使用 connection_aborted() 等函数中止了查询,你认为这是要走的路吗?另外,我知道这个 PHP 脚本最长的部分是 MySQL 查询,所以即使我知道 connection_aborted() 可以检测到用户取消呼叫,我仍然需要在 MySQL 查询期间检查这一点......我'我不太确定 PHP 是否可以处理这种“事件”。

因此,如果您有更好的想法,我迫不及待地想听听。

谢谢你。


更新: 经过进一步调查,我发现问题只发生在 Symfony 框架上(我没有准确地说,我的错)。似乎 Ajax 调用会锁定任何其他未来调用。它可能与控制器或路由系统有关,我正在调查它。

同样对于那些对这里的问题感兴趣的人是我的新测试用例:-使用 Symfony 1.4.3 的新项目,默认配置,我刚刚创建了一个应用程序和一个默认模块。-jquery 1.4 用于 ajax 查询。

这是我的 actions.class.php (在我独特的模块中):

这是我的 indexSuccess.php 模板文件:

对于新的页面模板,它不是很相关......但是有了这个,我能够重现我在实际应用程序中遇到的锁定问题。

其他人有同样的问题吗?

谢谢。

0 投票
1 回答
1035 浏览

asp.net - 当操作由 Windows 服务执行时,如何从 ASP.NET UI 取消长时间运行的数据库插入/更新操作

我在这里看到一个关于这个的问题。但是,在我的情况下,它是在表上运行长时间运行的插入/更新的 Windows 服务,我需要从我的 ASP.NET 应用程序中取消该操作。在上面的链接中,Burnsys 建议应该终止 Sql 服务器会话。这真的是唯一的方法和好的做法吗?

此外,在同一个建议中,有人建议可以使用 SqlCommand.Cancel 取消。但是,我不确定如何从 ASP.NET 应用程序的 Windows 服务中取消命令。

请指教。

提前感谢您的所有宝贵意见,Ashish

0 投票
1 回答
783 浏览

c# - 取消线程内的BackgroundWorker

我有一个使用 BackgroundWorker 和 C# 的运行时间更长的多步骤进程。在继续下一步之前,我需要确保每个步骤都已成功完成。我已经看到很多关于让 BackgroundWorker 捕获错误并通过单击取消按钮取消的参考,但我想自己检查错误,然后优雅地结束该过程。我是像点击取消按钮一样对待它,还是有其他方法?

0 投票
2 回答
13424 浏览

http - http 服务器可以检测到客户端取消了他们的请求吗?

我的网络应用程序必须处理和提供大量数据才能显示某些页面。有时,当服务器仍在忙于处理页面时,用户会关闭或刷新页面。这意味着服务器将继续处理数据几分钟,然后将其发送给不再监听的客户端。

是否可以检测到连接已断开,并对其做出反应?

在这个特定的项目中,我们使用 Django 和 NginX,或 Apache。我认为这是可能的,因为 Django 开发服务器似乎通过打印 Broken Pipe 异常来响应取消的请求。我希望它引发我的应用程序代码可以捕获的异常。 看来 JSP 可以做到这一点这里的node.js 也可以

或者,我可以在相关页面上注册一个卸载事件处理程序,让它执行同步 XHR 请求取消来自该用户的先前请求,并执行某种进程间通信来实现它。也许如果将较慢的数据处理交给另一个我可以更容易识别和杀死的进程,而不会杀死响应进程......

0 投票
1 回答
624 浏览

java - How to cancel a running AXIS 1.4 SOAP request?

Is it possible to cancel a SOAP request (Axis 1.4, Java 1.6) that's currently executing?

I'm using the interfaces generated with WSDL2Java, so the call is something like myProvider.submitMyRequest(request). This is synchronous and doesn't return until a response is received. I want to be able to interrupt the call based on an external condition. Short of killing the thread that runs the request, what are my options?