我有一个WordPress Web应用程序,它通过SOAP与WCF服务进行通信。
让我们说我访问一个长期运行的SOAP请求。在另一个选项卡中,我访问另一个SOAP请求,但这个请求很短。短期请求似乎被长期运行的请求阻止。
在执行SOAP请求时,我为每个请求创建一个新客户端。我不知道WCF服务配置的详细信息,但我确信它能够处理并发请求。这是因为在运行Web应用程序的另一个实例时,其他短请求完成,而不等待Web应用程序的第一个实例中的长时间运行。
我已经考虑过使用某种异步SOAP客户端,但我找不到任何适合我的东西。由于我发现这方面的信息很少,我认为我可能是那个做错事的人。
为什么运行请求会阻止其他请求?
答案 0 :(得分:1)
这与WCF无关。您的PHP会话文件被锁定,因此每个浏览器只能有一个并发请求。
基本上有两种解决方案:
在Web服务器上的后台线程或后台进程中启动WCF调用。这样处理浏览器请求的PHP脚本可以立即返回。
更改WCF服务,而不是立即执行,它接受“开始工作”调用,您可以轮询执行结果。