我使用了大量的webservices一个巨大的php应用程序。 通常他们都会在十秒钟或更短的时间内向我发送数据,但有时我会找到一个不响应并冻结所有进程的人。Php非阻塞soap客户端
所以我的问题是如何在不冻结所有系统的情况下在php中使用soap web服务,如果它没有在定义的时间之后响应。
我使用了大量的webservices一个巨大的php应用程序。 通常他们都会在十秒钟或更短的时间内向我发送数据,但有时我会找到一个不响应并冻结所有进程的人。Php非阻塞soap客户端
所以我的问题是如何在不冻结所有系统的情况下在php中使用soap web服务,如果它没有在定义的时间之后响应。
PHP不支持多线程和异步编程。但是,您可以使用另一个将执行此SOAP请求的进程;当然,您将无法通过这个新流程向客户端发送一些数据,但您可以将其响应写入数据库。
您可以使用stream_set_blocking将http/https流设置为非阻塞模式。
该解决方案并不一定与多线程penartur有关。唯一要做的就是使用非阻塞流的I/O复用,并使用select()函数作为nutrija建议。一个已经实施的解决方案可能在这个链接中找到:Making PHP’s SOAP client asynchronous
只想说在php中分叉是通过命令行调用脚本实现的! – dmp 2012-04-19 12:41:21
那么我唯一的解决方案就是使用其他技术来完成我的SOAP请求? – Awea 2012-04-19 13:14:04
只是想用一个非常有用的异步肥皂包装库碰到这个问题:http://en.dklab.ru/lib/Dklab_SoapClient/ – bonez 2012-09-05 16:13:51