Параллельно, несколько запросов / соединений SOAP? - PullRequest
4 голосов
/ 09 февраля 2011

Я использую следующий код:

<?php

$i=0;

// connection credentials and settings
$location = 'https://url.com/';
$wsdl = $location.'?wsdl';
$username = 'user';
$password = 'pass';

// create client resource - connection
$client = new Client($location, $wsdl, $username, $password);

// do stuff
while($i<10)
    {
      $client-­‐>doStuff();
      echo $client‐>response();
      $i++;
    }

?>

Отдельно:

<?php

public function doStuff() {
$this->response = $this->srv()->doStuff(array('stuff' => $this->get('stuff')));
return $this;
}

public function __construct($location, $wsdl, $username, $password, $proxyHost = NULL, $proxyPort = NULL) {

if(is_null($proxyHost) || is_null($proxyPort)) $connection = new SoapClient($wsdl, array('login' => $username, 'password' => $password));
else $connection = new SoapClient($wsdl, array('login' => $username, 'password' => $password, 'proxy_host' => $proxyHost, 'proxy_port' => $proxyPort));
$connection->__setLocation($location);
$this->connection = $connection;
return $this->connection;
}

public function srv() {
return $this->connection;
}

?>

Я хотел изменить это для запуска нескольких соединений, возможно, параллельно, хотя я не знакомдостаточно с SOAP, чтобы понять, как это сделать.

т.е.: пока он работает, $ client -‐> doStuff ();в цикле я бы хотел, чтобы он запускал другой ресурс / соединение следующей итерации до завершения другой.

Есть идеи?Спасибо

Ответы [ 3 ]

0 голосов
/ 09 февраля 2011

Я бы посмотрел на Многопоточность , также , это может помочь.

Таким образом, используя этот пример , вы можете рассмотреть JobStartAsync () для представления каждого запроса SOAP.

Код PSEUDO:

while($i<10) {
    JobStartAsync($client = new Client($location, $wsdl, $username, $password),$client­‐>doStuff());
    $i++;
}
0 голосов
/ 05 апреля 2014

Вы можете выполнить SOAP с помощью cURL следующим образом:

Выполнить SOAP с помощью cURL

И используйте этот класс PHP, предоставляющий интерфейс для запуска нескольких одновременных запросов CURL:

https://github.com/recuweb/ParallelCurl

0 голосов
/ 09 февраля 2011

Поскольку PHP является функциональным языком, скрипт ожидает, пока $client-­‐>doStuff(); не будет завершен каждый раз в цикле while.

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