我试图做一个代理类页转发一个AJAX请求SOAP服务器。 浏览器每10秒发送2个请求到同一页面(即server.php和不同的查询字符串)。 服务器根据查询字符串对soap服务器进行soap调用。 所有工作正常。奇怪的超时行为使用PHP SOAP客户端
然后我把睡眠(40秒),在SOAP服务器来模拟一个缓慢的反应,我也把超时主叫方中止在几秒钟后电话。
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));
如果浏览器发送一个Ajax请求http://myserver/server.php?id=IBM 请求我设置的超时后停止。 如果我在第一站之前尝试拨打第二个电话,第二个电话不会超时。
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个标签,并调用:10秒,20秒后第二和30秒后的第三后
http://myserver/server.php?id=IBM
http://myserver/server.php?id=AAP
http://myserver/server.php?id=MSX
第一个停止。
这是一种正常的行为或我错过了什么? 在此先感谢