0

我正在使用很多 web 服务一个巨大的 php 应用程序。通常他们都会在十秒或更短的时间内向我发送数据,但有时我会遇到一个没有响应并冻结所有过程的人。

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

4

4 回答 4

3

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

于 2012-04-19T12:29:37.300 回答
2

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

于 2014-06-23T09:38:24.040 回答
1

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

于 2012-04-19T12:47:11.540 回答
-1

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

于 2012-04-19T12:46:42.900 回答