【发布时间】:2012-02-29 17:23:29
【问题描述】:
我正在尝试制作一个类似代理的页面,将 AJAX 请求转发到 SOAP 服务器。 浏览器每 10 秒向同一页面(即具有不同查询字符串的 server.php)发送 2 个请求。 服务器根据查询字符串对soap 服务器进行soap 调用。 一切正常。
然后我在soap服务器中设置了一个睡眠(40秒)来模拟一个缓慢的响应,我还在调用者设置了一个超时以在几秒钟后中止调用。
server.php: Pseudo code:
$timeout = 10;
ini_set("default_socket_timeout", $timeout);
$id = $_GET['id'];
$wsdl= 'http://soapserver/wsdl'
$client = new SoapClient($wsdl,array('connection_timeout'=> $timeout));
print($client->getQuote($id));
如果浏览器向http://myserver/server.php?id=IBM发送ajax请求 请求在我设置的超时后停止。 如果我尝试在第一次停止之前拨打第二次电话,则第二次电话不遵守超时。
i.e.
Request:
GET http://myserver/server.php?id=IBM
and after 1 second
GET http://myserver/server.php?id=AAP
Response:
after 10 seconds:
No data
after 20 seconds:
No data
我也尝试不使用 PHP SOAP 而是使用 curl,但我得到了相同的结果。
我还尝试在浏览器上打开 3 个标签并调用:
http://myserver/server.php?id=IBM
http://myserver/server.php?id=AAP
http://myserver/server.php?id=MSX
第一个在 10 秒后停止,第二个在 20 秒后停止,第三个在 30 秒后停止。
这是正常行为还是我错过了什么? 提前致谢
【问题讨论】: