Я пытаюсь создать прокси-подобную страницу, которая перенаправляет AJAX-запрос на SOAP-сервер.
Браузер отправляет 2 запроса на одну и ту же страницу (т.е. server.php с другой строкой запроса) каждые 10 секунд.
Сервер делает мыльный вызов на мыльный сервер в зависимости от строки запроса.
Все работает нормально.
Затем я помещаю спящий режим (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));
Если браузер отправляет запрос 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 вкладки в браузере и позвонить:
http://myserver/server.php?id=IBM
http://myserver/server.php?id=AAP
http://myserver/server.php?id=MSX
Первый останавливается через 10 секунд, второй - через 20 секунд, а третий - через 30 секунд.
Это нормальное поведение или я что-то упускаю?
Заранее спасибо