Php非阻塞肥皂客户端

时间:2012-04-19 12:26:14

标签: php soap nonblocking

我正在使用很多webservices一个庞大的php应用程序。 通常情况下,他们都会在十秒或更短的时间内向我发送数据,但有时候我会有一个没有回复并冻结所有过程的人。

所以我的问题是,如果在定义的时间后没有响应,我怎样才能在php中使用soap webservice而不冻结所有系统。

4 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

解决方案不一定与多线程penartur有关。唯一要做的是使用非阻塞流使用I / O多路复用,并使用select()函数作为nutrija建议。可以在此链接中找到一个已实施的解决方案:Making PHP’s SOAP client asynchronous

答案 2 :(得分:1)

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

答案 3 :(得分:-1)

您可以使用stream_set_blocking将http / https流设置为非阻止模式。