我試圖做一個代理類頁轉發一個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
第一個停止。
這是一種正常的行爲或我錯過了什麼? 在此先感謝