背景:获取某商城的商品,遍历变体,调用图片接口上传图片并将其赋值给变体
<?php
require 'vendor/autoload.php';
use GuzzleHttp\Client;
use GuzzleHttp\Exception\GuzzleException;
use GuzzleHttp\Pool;
use Psr\Http\Message\ResponseInterface;
set_time_limit(120);
class Test
{
/**
* Guzzle HTTP 客户端
*
* @var object|Client
*/
protected object $http;
private int $concurrency = 5;
/**
* 设置 JSON 文件路径
* 初始化 Guzzle Http 客户端
*/
public function __construct()
{
$this->http = new Client([
'base_uri' => 'https://xxxxxxxxxxxxx',
'verify' => false,
'allow_redirects' => false,
'headers' => [
'Authorization' => 'Bearer xxxxxxxxxxxxxxxxxxx',
],
]);
}
public function testProduct()
{
$url = 'xxxxxxxxxxxxxxx';
$response = $this->http->get($url);
$body = $response->getBody();
$data = json_decode($body, true);
$variants = $data['product']['xxxxx'];
$this->testImage($variants);
}
protected function testImage(array $variants): void
{
$concurrency = $this->concurrency;
$client = $this->http;
$requests = function () use ($client, $variants) {
$url = '/xxxx';
foreach ($variants as $v) {
$data = [
'image' => [
'src' => '图片地址',
'variant_id' => [$v['id']]
]
];
yield function () use ($client, $url, $data) {
$reqOption['json'] = $data;
$reqOption['verify'] = false;
return $client->requestAsync('POST', $url, $reqOption);
};
}
};
$pool = new Pool($client, $requests(), [
'concurrency' => $concurrency,
'fulfilled' => function (ResponseInterface $response) {
echo "\t=>\tDONE! status:" . $response->getStatusCode() . PHP_EOL;
},
'rejected' => function ($reason, $index) {
echo 'ERROR => ' . strtok($reason->getMessage(), "\n") . PHP_EOL;
},
]);
$promise = $pool->promise();
$promise->wait();
}
}
$startTime = time();
$test = new Test();
$test->testProduct();
$endTime = time();
$useTime = $endTime - $startTime;
echo "cost time:".gmdate("H:i:s", $useTime);
更多精彩内容:各种AI课程、技能课程、黑科技软件、网站小程序源码、副业小项目、PPT模板等精品素材、电商课程、推广引流课程等,尽在 天边资源网 。
Google Chrome
Windows 10