php 并行的多个SOAP请求/连接?

xv8emn3q  于 2022-10-30  发布在  PHP
关注(0)|答案(3)|浏览(143)

下面的代码:

<?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()时;在循环中,我希望它在下一个迭代完成之前运行另一个资源/连接。
有什么主意吗?谢谢

mzillmmw

mzillmmw1#

我会调查一下Multi-Threading,这也可能会有帮助。
因此,使用this example时,您可能会考虑使用JobStartAsync()来表示每个SOAP请求。
伪代码:

while($i<10) {
    JobStartAsync($client = new Client($location, $wsdl, $username, $password),$client­‐>doStuff());
    $i++;
}
qaxu7uf2

qaxu7uf22#

您可以使用cURL执行SOAP,如下所示:
Execute SOAP using cURL
并使用此PHP类提供一个用于运行多个并发CURL请求的接口:
https://github.com/recuweb/ParallelCurl

jyztefdp

jyztefdp3#

由于PHP是一种函数式语言,因此每次在while循环中,脚本都会等待$client-­‐>doStuff();完成。

相关问题