网站首页 > 精选文章 正文
概述
在对接第三方接口时,有些接口可能会比较耗时,为了提高接口调用的效率,可以考虑使用异步请求。通过异步请求,可以在发起接口调用后立即返回结果,而不需要等待接口返回。
正常请求
<?php
/**
* @desc go.php 描述信息
* @date 2024/5/18 18:08
*/
declare(strict_types=1);
$url = 'http://127.0.0.1:8888/index/sync';
$timeOne = microtime(true);
foreach (range(1, 100) as $key) {
$list[] = file_get_contents($url);
}
$timeTwo = microtime(true);
echo '[x] [系统调用耗时时间] ' . ($timeTwo - $timeOne) . PHP_EOL;
调用输出,可以看出循环请求100次,总耗时:37.23秒
[x] [系统调用耗时时间] 37.230930089951
并发请求
Guzzle是一个PHP的HTTP客户端,用来轻而易举地发送请求,并集成到我们的WEB服务上。
接口简单:构建查询语句、POST请求、分流上传下载大文件、使用HTTP cookies、上传JSON数据等等。
发送同步或异步的请求均使用相同的接口。
使用PSR-7接口来请求、响应、分流,允许你使用其他兼容的PSR-7类库与Guzzle共同开发。
抽象了底层的HTTP传输,允许你改变环境以及其他的代码,如:对cURL与PHP的流或socket并非重度依赖,非阻塞事件循环。
中间件系统允许你创建构成客户端行为。
这里可以使用Promise和异步请求来同时发送多个请求。
安装
compsoer require guzzlehttp/guzzle
伪代码
<?php
/**
* @desc go.php
* @date 2024/5/18 18:08
*/
declare(strict_types=1);
require_once __DIR__ . '/../vendor/autoload.php';
use GuzzleHttp\Client;
use GuzzleHttp\Promise;
$requestData = [
'username' => '开源技术小栈',
'age' => 24
];
$url = 'http://127.0.0.1:8888/index/sync';
$header = [
'Authorization' => 'Bearer xxxxxxxxxxxx'
];
$timeOne = microtime(true);
$client = new Client(['verify' => false]);
for ($i = 0; $i < 100; $i++) {
$promises[$i] = $client->postAsync($url, ['headers' => $header, 'json' => $requestData]);
}
$responses = Promise\Utils::unwrap($promises);
foreach ($responses as $key => $response) {
echo '【响应状态码】 : ' . $response->getStatusCode() . "\n";
}
$timeTwo = microtime(true);
echo '[x] [系统调用耗时时间] ' . ($timeTwo - $timeOne) . PHP_EOL;
调用输出,可以看出循环请求100次,总耗时:10.41秒
【响应状态码】 : 200
....
【响应状态码】 : 200
[x] [系统调用耗时时间] 10.412175893784
更多了解guzzlephp官方文档:
https://docs.guzzlephp.org/en/stable/quickstart.html
猜你喜欢
- 2025-04-30 干货|三相异步电动机绕组故障分析和处理、附表!
- 2025-04-30 异步爬虫进阶:使用asyncio和aiohttp实现高效异步爬取
- 2025-04-30 奇奇怪怪,单相双值电容电动机接线,大神也会被绊倒
- 2025-04-30 PHP 8.1新功能初探:添加Enums, Fsync和Fibers等 正式版11月发布
- 2025-04-30 异步fifo设计及时序约束设置(异步fifo结构图)
- 2025-04-30 Rust异步HTTP全攻略:reqwest库的最佳实践
- 2025-04-30 图片异步延迟加载,提升网页打开速度
- 2025-04-30 Python异步编程:3小时从入门到实战,让你的程序快如闪电!
- 2025-04-30 聊一下 gRPC 的 C++ 异步编程(grpc 异步流模式)
- 2025-04-30 一文看懂Python中异步、进程、线程、队列
- 最近发表
- 标签列表
-
- 向日葵无法连接服务器 (32)
- git.exe (33)
- vscode更新 (34)
- dev c (33)
- git ignore命令 (32)
- gitlab提交代码步骤 (37)
- java update (36)
- vue debug (34)
- vue blur (32)
- vscode导入vue项目 (33)
- vue chart (32)
- vue cms (32)
- 大雅数据库 (34)
- 技术迭代 (37)
- 同一局域网 (33)
- github拒绝连接 (33)
- vscode php插件 (32)
- vue注释快捷键 (32)
- linux ssr (33)
- 微端服务器 (35)
- 导航猫 (32)
- 获取当前时间年月日 (33)
- stp软件 (33)
- http下载文件 (33)
- linux bt下载 (33)