php - как отправить несколько xml-запросов (веб-сервисы) - PullRequest
0 голосов
/ 29 января 2019

Я не нашел ни одного примера того, как сделать несколько запросов на веб-сервис одновременно (одновременно).

На мгновение это запрос, который я отправляю, чтобы получить информацию об отеле:

$s = new soapclient("http://www.wb-service-address.com",array('wsdl'));
$HotelInfo = new stdClass;

<HotelInfo softwareID="123" SessionId="153" Lang="EN" InfoType="">
     <Hotel  ID="103" /> 
</HotelInfo>

$HotelInfo->xmlRequest = $paramsStr;
$result = $s->__call("SubmitXmlString",array($HotelInfo));
$obj_pros = get_object_vars($result);
$hotel_full_xml =  $obj_pros['SubmitXmlStringResult'];  
$hotel_full_xml = simplexml_load_string($hotel_full_xml);

(XML «HotelInfo» - это запрос)

Я хотел бы отправить один и тот же запрос нескольким системам (URL) одновременно.

Iбуду признателен за вашу помощь

1 Ответ

0 голосов
/ 29 января 2019

php по своей природе не делает этого, но вы можете использовать другую библиотеку, такую ​​как GuzzleHttp

Пример :

public function index()
{
 $promises = call_user_func(function () {
     foreach ($this->usernames as $username) {
         (yield $this->client->requestAsync('GET', 'https://api.github.com/users/' . $username));
     }
 });
 // Wait till all the requests are finished.
 \GuzzleHttp\Promise\all($promises)->then(function (array $responses) {
     $this->profiles = array_map(function ($response) {
         return json_decode($response->getBody(), true);
     }, $responses);
 })->wait();
 // Return JSON response
 $response = new Response();
 // StreamInterface objects are not immutable!
 $response->getBody()->write($this->html());
 return $response->withHeader('Content-type', 'text/html');

}

Также вы можете использовать это решение: https://github.com/amphp/amp

другое решение с python: ThreadPoolExecutor

см. Это в документации по питону: Параллельное выполнение

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...