SOAP 请求正在阻止其他 SOAP 请求


SOAP requests are blocking other SOAP requests

我有一个WordPress Web应用程序,它通过SOAP与WCF服务进行通信。

假设我访问了一个长时间运行的 SOAP 请求。在另一个选项卡中,我访问另一个 SOAP 请求,但这个请求运行时间很短。短请求似乎被长时间运行的请求阻止。

在执行 SOAP 请求时,我为每个请求创建一个新客户端。我不知道 WCF 服务配置的详细信息,但我相信它能够处理并发请求。这是因为在运行 Web 应用程序的另一个实例时,其他短请求会完成,而无需等待 Web 应用程序的第一个实例中长时间运行的请求。

我已经考虑过使用某种异步 SOAP 客户端,但我还没有找到任何适合我的东西。由于我发现的信息很少,我想我可能是做错事的人。

为什么正在运行的请求会阻止其他请求?

这与 WCF 无关。您的 PHP 会话文件被锁定,因此每个浏览器只能有一个并发请求。

基本上有两种解决方案:

  • 在 Web 服务器上的后台线程或后台进程中启动 WCF 调用。这样,处理浏览器请求的 PHP 脚本可以立即返回。

  • 更改 WCF 服务,以便它接受"开始工作"调用,而不是立即执行,并且可以轮询执行结果。