teknasyon/guzzle-async-pool
此包最新版本(2.0.0)没有提供许可证信息。
2.0.0
2022-09-27 12:29 UTC
Requires
- guzzlehttp/guzzle: 7.5.*
Requires (Dev)
- phpunit/phpunit: 9.5.*
This package is auto-updated.
Last update: 2024-09-27 16:58:35 UTC
README
此库旨在简化GuzzleHttp\Pool类的使用,特别是用于SOAP。
演示
要运行example
目录中的示例代码,请依次执行以下命令:
$ docker run -it --rm -v $(pwd):/app composer update $ cd example $ docker build -t testserver . $ docker run -d -p 8080:80 -v $(pwd):/var/www/html testserver $ php test.php $ php test_guzzle_pool.php
安装
要将库添加到项目中,请在composer.json文件中添加以下行,并运行composer update命令:
"require": {
"teknasyon/guzzle-async-pool": "1.0"
}
使用
可以使用库中的
// Soap servisinin wsdl dosyası $wsdl = 'http://127.0.0.1:8080/soap_server.php?wsdl'; // Soap servis adresi $endpoint = 'http://127.0.0.1:8080/soap_server.php'; // İstekte bulunulacak SoapAction bilgisi $soapAction = 'http://tempuri.org/Multiply'; // İstekte bulunulacak fonksiyon adı. $functionName = 'Multiply'; // İstekte bulunulacak fonksiyon için parametreler. $functionParams = ['intA' => 10, 'intB' => 3]; $request = SoapRequestFactory::factory( $wsdl, $endpoint, $soapAction, $functionName, $functionParams );
生成的请求对象通过
$requests = [
SoapRequestFactory::factory(
'http://127.0.0.1:8080/soap_server.php?wsdl',
'http://127.0.0.1:8080/soap_server.php',
'http://tempuri.org/Add',
'Add',
['intA' => 10, 'intB' => 3]
),
SoapRequestFactory::factory(
'http://127.0.0.1:8080/soap_server.php?wsdl',
'http://127.0.0.1:8080/soap_server.php',
'http://tempuri.org/Subtract',
'Subtract',
['intA' => 10, 'intB' => 3]
),
SoapRequestFactory::factory(
'http://127.0.0.1:8080/soap_server.php?wsdl',
'http://127.0.0.1:8080/soap_server.php',
'http://tempuri.org/Multiply',
'Multiply',
['intA' => 10, 'intB' => 3]
)
];
$guzzlePoolSettings = ['concurrency' => 5];
$guzzleClient = new Client();
$pool = new Teknasyon\GuzzleAsyncPool\Pool($requests, $guzzlePoolSettings, $guzzleClient);
$pool->onCompletedRequest(function ($index, RequestInterface $request, ResponseInterface $response) {
});
$pool->onFailedRequest(function ($index, RequestInterface $request, \Exception $exception) {
});
$pool->wait();
- <$index>:请求对象在$requests数组中的索引值。
- <$request>:请求对象。
- <$response>:响应对象。
- <$index>:请求对象在$requests数组中的索引值。
- <$request>:请求对象。
- <$exception>:错误对象。如果错误对象为GuzzleHttp\Exception\RequestException类型,则可以通过$exception->getResponse()访问Response对象。
SOAP请求和响应的转换
$pool->onCompletedRequest(function ($index, RequestInterface $request, ResponseInterface $response) use ($startTime) { $soapResponse = Decoder::decode($response->getBody()->getContents()); ... }); $pool->onFailedRequest(function ($index, RequestInterface $request, \Exception $exception) use ($startTime) { $soapResponse = null; if ($exception instanceof RequestException) { $soapResponse = Decoder::decode($exception->getResponse()->getBody()->getContents()); } ... });