2012-04-19 126 views
0

我使用了大量的webservices一个巨大的php应用程序。 通常他们都会在十秒钟或更短的时间内向我发送数据,但有时我会找到一个不响应并冻结所有进程的人。Php非阻塞soap客户端

所以我的问题是如何在不冻结所有系统的情况下在php中使用soap web服务,如果它没有在定义的时间之后响应。

回答

3

PHP不支持多线程和异步编程。但是,您可以使用另一个将执行此SOAP请求的进程;当然,您将无法通过这个新流程向客户端发送一些数据,但您可以将其响应写入数据库。

+0

只想说在php中分叉是通过命令行调用脚本实现的! – dmp 2012-04-19 12:41:21

+0

那么我唯一的解决方案就是使用其他技术来完成我的SOAP请求? – Awea 2012-04-19 13:14:04

+0

只是想用一个非常有用的异步肥皂包装库碰到这个问题:http://en.dklab.ru/lib/Dklab_SoapClient/ – bonez 2012-09-05 16:13:51

0

您可以使用JavaScript对另一个将发出SOAP请求的PHP文件进行AJAX调用。

+0

我已经使用这样的东西,我通过一个Ajax的PHP脚本调用5个不同的webservices查询,但是如果其中一个不响应脚本继续运行,我永远不会获得任何结果:( – Awea 2012-04-19 13:15:41

+0

使用AJAX调用的php脚本使用$ _SESSION数据吗? – lugte098 2012-04-19 14:00:32

+1

尝试将session_write_close()放在您的开头用AJAX调用的php脚本 – lugte098 2012-05-07 11:10:56