背景:获取某商城的商品,遍历变体,调用图片接口上传图片并将其赋值给变体
<?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模板等精品素材、电商课程、推广引流课程等,尽在 天边资源网 。