当前位置: 首页 > 后端技术 > PHP

MixPHPV2生态:让Guzzle支持Swoole的Hook协程

时间:2023-03-29 17:42:29 PHP

Guzzle是非常流行的PHPHTTP客户端,现在各大厂商的SDK也开始基于Guzzle开发,因为Swoole只支持PHPStream的协程Hook,而Guzzle默认使用cURL扩展,所以MixPHP开发了GuzzleHook,可以在不修改源码的情况下让Guzzle协程。Githubhttps://github.com/mix-php/guzzle-hook安装使用Composer安装:composerrequiremix/guzzle-hook在项目的composer.json文件中添加额外的配置项,如下:"extra":{"include_files":["vendor/mix/guzzle-hook/src/functions_include.php"]}直接使用Guzzle开发,无需任何特殊代码处理,直接按照Guzzle文档使用://MixPHPisxgo,nativeswoole是gogo(function(){$client=newGuzzleHttp\Client();$res=$client->request('GET','https://api.github.com/user',['auth'=>['用户','通过'],]);echo$res->getStatusCode();});第三方SDK依赖Guzzle,例如:alibabacloud/clientTencentCloud/tencentcloud-sdk-php等第三方库requirefromcomposer.json可以看出依赖guzzlehttp/guzzle,所以可以直接使用在Swoole的协程中。//MixPHP是xgo,nativeswoole是gogo(function(){try{//实例化一个证书对象,入参需要传给腾讯云账号secretId,secretKey$cred=newCredential("secretId","secretKey");//#实例化一个客户端对象来请求一个产品(以cvm为例)$client=newCvmClient($cred,"ap-guangzhou");//实例化一个请求对象$req=newDescribeZonesRequest();//通过client对象调用你要访问的接口,需要传入request对象$resp=$client->DescribeZones($req);print_r($resp->toJsonString());}catch(TencentCloudSDKException$e){echo$e;}});